随机返回三个选项之一的函数,其中所有选项都具有完全相同的机会?

时间:2015-01-15 13:17:29

标签: javascript random

我知道之前可能已经问过这个问题,但是我试图让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条件或类似的东西。

4 个答案:

答案 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)]