我知道之前可能已经问过这个问题,但是我试图让Javascript函数返回三个选项中的一个。问题是每个选项应该完全相等的机会。 这就是我到目前为止所做的:
var choice = Math.random();
if (choice <= 0.34) {
choice = "option1";
} else if (choice <= 0.67) {
choice = "option2";
} else {
choice = "option3";
}
这已经非常准确了,但是&#34; option3&#34;略低一点。如何重新制定这个以使每个选项都有相同的发生机会?我更喜欢一种不涉及使用&#34; 0.3333333333333333 ......&#34;的解决方案。在if条件或类似的东西。
答案 0 :(得分:5)
我认为做这样的事情会更简洁明了:
var options = ["option1", "option2", "option3"];
var choice = options[Math.floor(Math.random()*options.length)];
答案 1 :(得分:2)
将随机数乘以3将允许您在不使用小数或分数的情况下执行此操作:
var choice = Math.random() * 3;
if (choice <= 1) {
choice = "option1";
} else if (choice <= 2) {
choice = "option2";
} else {
choice = "option3";
}
答案 2 :(得分:2)
尝试这种坚硬的风格:
var choice = ['first', 'second', 'third'][Math.floor(Math.random()*3)]
答案 3 :(得分:2)
基本上这是你的+ Alex的解决方案,但我发现更漂亮
options=['option1','option2','option3']
choice = options[Math.floor(Math.random()*options.length)]