【发布时间】:2020-08-31 04:10:34
【问题描述】:
我很困惑为什么下面通过 for 循环在每次迭代中为种族和性别生成相同的值对。我会想象 random() 的初始种子值(未在我的代码中明确声明)是在第一次迭代中获取的,然后循环根据初始种子继续到随机序列中的下一个值,但似乎不是案子。相反,它似乎在每次迭代中使用相同的种子/值,从而在每次迭代中产生相同的种族和性别值。
最小的工作示例:
// Two arrays
var race = ["B","W"];
var gender = ["F", "M"];
for (i = 0; i < 6; i++) {
var race = race[Math.floor(Math.random()*race.length)];
var gender = gender[Math.floor(Math.random()*gender.length)];
document.write(race)
document.write(gender)
}
// Example result: BMBMBMBMBMBM (BM repeated 6 times)
是否有某种方式循环使用独立绘制的值,而不是为每个循环迭代生成相同的值?显然,C++ 已经回答了这个问题,Javascript seeding 有很多问题,但不是这个。
【问题讨论】:
-
在代码 sn-p 中,您对数组和随机生成的变量都使用了“race”和“gender”。您需要使用 4 个不同的名称。
标签: javascript loops random