该程序应该执行以下操作:
结果是随机结构在网格内合并。高正值的分组将影响附近的细胞并导致它们倾斜高,低负值的分组将做同样但倾斜低。
所有单元格中所有值的总和应该为零。虽然存在局部的高偏斜和低偏斜数组,但在足够大的样本大小上,所有单元的总数应该为零。
问题在于,经过1000次迭代后,这些值始终为负值。你有结构和locallized高点和低点,但总值偏差负。 (这意味着随着时间的推移,整个网格只会被负数填充)。
每次运行模拟时,值都会偏差。有什么想法吗?
编辑:我已将问题分解为以下功能。 RandomGridValue中所有数字的平均值几乎总是为负值。
//For every cell value, this function generates a string of random numbers between -RandMax/2 and +RandMax/2. It then takes the average of all of these numbers. It assigns that value to a cell in the RandomGridValue array.
function AddChaos() {
for (var l = 0; l < GridX; l++) {
for (var m = 0; m < GridY; m++) {
var RandomGrid = 0;
for (var n = 0; n < RandNums; n++) {
RandomGrid = RandomGrid + Math.random() * RandMax * 2 - RandMax;
}
RandomGridValue[l][m] = RandomGrid / RandNums;
}
}
}
答案 0 :(得分:2)
由于Javascript实现的浮点标准,使用十进制值进行算术是错误的,至少可以说......
一种解决方法是将小数乘以100转换为整数,然后将数学除以100。
这只适用于最多2个小数位的情况。如果你需要更高的精度,我建议使用除Javascript之外的其他语言。