我试着编写这段代码来测试我的想法,以了解如何计算散列映射的相似指数的平均值。
即,如果第一个数组的第一个值为2
,并且第二个数组的第一个值为4
,并且第三个数组的第一个值为3
,那么对于散列图中包含的每个数组,第一个值为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循环填充。该代码被破坏,但没有成功执行上述操作。我一直在网上搜索并尝试不同的方法来解决它,但我一直无法解决它。也许有人可以发现我的错误逻辑。
您的代码有这么多缺陷。 'AVERAGED_WEIGHTS [key - 1] + = value [key - 1]; '以及在你正在分配钥匙,但没有存储在任何地方的情况。为什么你使用最后一个循环? – Prashant 2015-02-24 05:47:33
dig [this one](http://stackoverflow.com/questions/28688007/take-the-average-of-each-index-in-a-double-hash-map-and-assign-it-to-an - 输出)这是我想要做的更完整的描述 – 2015-02-24 05:50:12
@Prashant你同意Daniel的答案是正确的吗? – 2015-02-24 05:58:49