随机 returns 三个选项之一的函数,其中所有选项都有完全相同的机会?
Function that randomly returns one of three options, where all options have the exact same chance?
我知道以前可能有人问过这个问题,但我正在尝试使用 Javascript 函数 return 三个选项之一。问题是每个选项的机会应该完全相等。
这是我目前所拥有的:
var choice = Math.random();
if (choice <= 0.34) {
choice = "option1";
} else if (choice <= 0.67) {
choice = "option2";
} else {
choice = "option3";
}
这已经很准确了,但是 "option3" 的概率略低。我怎样才能重新表述它以使每个选项都有相同的发生机会?我更喜欢不涉及在 if 条件或类似情况下使用“0.333333333...”的解决方案。
将随机数乘以 3 将允许您在不使用小数或分数的情况下执行此操作:
var choice = Math.random() * 3;
if (choice <= 1) {
choice = "option1";
} else if (choice <= 2) {
choice = "option2";
} else {
choice = "option3";
}
尝试这种硬风格:
var choice = ['first', 'second', 'third'][Math.floor(Math.random()*3)]
基本上这是你的 + Alex 的解决方案,但我发现它更漂亮
options=['option1','option2','option3']
choice = options[Math.floor(Math.random()*options.length)]
我认为这样做会更干净、更简单:
var options = ["option1", "option2", "option3"];
var choice = options[Math.floor(Math.random()*options.length)];
我知道以前可能有人问过这个问题,但我正在尝试使用 Javascript 函数 return 三个选项之一。问题是每个选项的机会应该完全相等。 这是我目前所拥有的:
var choice = Math.random();
if (choice <= 0.34) {
choice = "option1";
} else if (choice <= 0.67) {
choice = "option2";
} else {
choice = "option3";
}
这已经很准确了,但是 "option3" 的概率略低。我怎样才能重新表述它以使每个选项都有相同的发生机会?我更喜欢不涉及在 if 条件或类似情况下使用“0.333333333...”的解决方案。
将随机数乘以 3 将允许您在不使用小数或分数的情况下执行此操作:
var choice = Math.random() * 3;
if (choice <= 1) {
choice = "option1";
} else if (choice <= 2) {
choice = "option2";
} else {
choice = "option3";
}
尝试这种硬风格:
var choice = ['first', 'second', 'third'][Math.floor(Math.random()*3)]
基本上这是你的 + Alex 的解决方案,但我发现它更漂亮
options=['option1','option2','option3']
choice = options[Math.floor(Math.random()*options.length)]
我认为这样做会更干净、更简单:
var options = ["option1", "option2", "option3"];
var choice = options[Math.floor(Math.random()*options.length)];