gpt4 book ai didi

java - 计算 HashMap 索引的平均值

转载 作者:行者123 更新时间:2023-12-01 16:59:40 26 4
gpt4 key购买 nike

我尝试编写这段代码来测试我的想法,即如何计算 HashMap 的类似索引的平均值。
即,对于 hashmap 中包含的每个数组,如果第一个数组的第一个值为 2 ,第二个数组的第一个值为 4 ,并且第一个数组的第一个值为 4 。第三个数组是 3,我想将 (4+3+2/3)= 3 的值分配给第一个索引的最终 double[] 数组,并且对于所有索引 2 到 n 都是如此。

    int Size = 3;

double[] AVERAGED_WEIGHTS = new double[Size];

//store weights to be averaged.
Map<Integer,double[]> cached_weights = new HashMap<Integer,double[]>();

double[] weights = new double[Size];

int iteration = 0;
do
{
weights[iteration] = Math.floor(Math.random() * 10000) / 10000;

iteration++;

//store weights for averaging
cached_weights.put( iteration , weights );
}
while (iteration < Size);

//calc averages
for (Entry<Integer, double[]> entry : cached_weights.entrySet())
{
int key = entry.getKey();
double[] value = entry.getValue();
AVERAGED_WEIGHTS[ key - 1 ] += value[ key - 1 ];

if (key == iteration)
{
AVERAGED_WEIGHTS[ key - 1 ] /= key;
}
}
for(int i = 0; i < weights.length; i++)
{
weights[i] = AVERAGED_WEIGHTS[i];
}

这模仿了原始程序的结构,其中权重通过 do while 循环填充。该代码已被破坏,并且无法成功执行上述操作。我一直在网上搜索并尝试不同的方法来解决它,但我一直无法解决它。也许有人能发现我的错误逻辑。

最佳答案

也许我误解了你,但你没有计算平均值,因为对于 map 中的每个数组,你没有考虑到它的所有位置。您正在使用 key ,这完全没有意义。无论如何,你的代码非常困惑。您需要做的只是将一个循环嵌套在另一个循环中。一个遍历数组,另一个遍历每个数组的元素。计算平均值的方法如下(以教学方式):

//compute averages
double[] sums = new double[size];
double[] averages = new double[size];

for (Entry<Integer, double[]> entry : cachedWeights.entrySet()) {
double[] value = entry.getValue();
for(int pos=0; pos < Math.min(size, value.length); pos++){
sums[pos] += value[pos];
}
}
for(int pos=0; pos < size; pos++){
averages[pos] = sums[pos] / cachedWeights.size();
}

关于java - 计算 HashMap 索引的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28688897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com