我需要创建一个数组(观测值),其中包含八个数字的数组(命名为观测值)。这些数字应介​​于0到9之间。

let observations = [];
let observation = [];
let min = 0;
let max = 9;
for (let i = 0; i < 20000; i++) {
    for (let j = 0; j < 8; j++) {
        observation[j] = Math.floor(Math.random() * (max - min + 1)) + min;
    }
    observations.push(observation);
}


问题:数字是伪随机数,我得到2万次相同的结果。

是否有可能在JavaScript中解决此问题?

最佳答案

您每次都重复使用相同的observation数组,而只是在内部循环中将其覆盖。因此,对其的所有引用都包含上次迭代的结果。

每次通过外循环都需要创建一个新的observation数组。

let observations = [];
let min = 0;
let max = 9;
for (let i = 0; i < 20000; i++) {
    let observation = [];
    for (let j = 0; j < 8; j++) {
        observation.push(Math.floor(Math.random() * (max - min + 1)) + min);
    }
    observations.push(observation);
}

08-07 23:03