该程序应执行以下操作:
结果是随机结构在网格内合并。高正值的分组将影响附近的单元格并使它们偏斜,而低负值的分组将执行相同的操作,但会偏低。
所有像元中所有值的总和应为零。尽管存在局部组的高偏和低偏数,但在足够大的样本量下,所有像元的总数应为零。
问题是,经过1000次迭代后,这些值始终偏向负数。您具有结构和局部化的高点和低点,但是总值始终偏向负数。 (这意味着随着时间的推移,整个网格将仅填充负数)。
每次运行模拟时,这些值都会向负偏斜。有什么想法吗?
编辑:我已将问题归结为以下功能。 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;
}
}
}
最佳答案
由于Javascript实现的浮点标准,至少可以说用十进制值进行算术是不容易的。
一种解决方法是通过乘以100将小数转换为整数,然后进行数学运算然后除以100。
仅当您最多保留两位小数时,此方法才有效。如果您需要的精度更高,那么我建议为该部分推荐使用Javascript以外的语言。