使用Math.random()函数生成50/50概率的正确方法

37

获取精确的50/50机会的正确函数是什么:

return Math.random() < 0.5;

对比

return Math.random() <= 0.5;

“Precise”是什么意思?运行函数10次应该返回5个true和5个false值吗? - BenM
2个回答

37

Math.random():

Math.random() 函数返回一个浮点型伪随机数,范围为 [0, 1),即从 0(包括)到 1(不包括)

生成的随机数要么在区间 [0,0.5),要么在区间 [0.5,1) 中。因此,您可以使用 return Math.random() < 0.5; 来实现 (理论上的) 50/50 概率。


35
第一个是正确的,因为随机数生成器返回从0到0.99999999的数字(取决于生成器本身的精确度)。
因此,通过使用“<”运算符将值分成两组,您应该得到两个相等的范围:
[0到0.49999999]和[0.5到0.9999999]

当我运行 Math.random() 时,有时候 它会连续返回同一组的数字,但是多次运行它最终会产生50/50的结果。但需要运行多少次呢? - Dmitry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接