你怎么得到50%的赔率?

IQA*_*eas 24 javascript random actionscript-3

其中的这些会给出恰好当随机值在0和1之间的浮动(如AS3的或JavaScript的50%的机会Math.random())?我已经看到它们都在实践中使用过:

if (Math.random() > 0.5) ...
if (Math.random() >= 0.5) ...
Run Code Online (Sandbox Code Playgroud)

抬头:我在这里很迂腐,因为在实践中,击球0.5确实是天文数字低.但是,我仍然想知道中间的位置0 inclusive1 exclusive.

abi*_*ssu 40

从数学上讲,一个旨在将间隔[0,1)(使用["包含"和)排他性)以精确的50-50比例分开的测试将使用类似的比较

if (Math.random() >= 0.5) ...
Run Code Online (Sandbox Code Playgroud)

这是因为该分割的初始间隔[0,1)成两个相等的间隔[0,0.5)[0.5,1).

通过比较,测试

if (Math.random() > 0.5) ...
Run Code Online (Sandbox Code Playgroud)

将间隔分成[0,0.5](0.5,1),它们具有相同的长度,但第一个是包含边界的,而第二个则不是.

在两个测试中边界是否以相同的方式包含在限制中并不重要,因为精度接近无限,但是对于所有有限精度,它会产生微小但可测量的差异.

假设精度限制是0.000001(十进制),那么>=0.5测试具有完全[0,0.499999][0.5,0.999999],并且很明显看到在第一个间隔中添加0.5(或从第二个间隔中减去它)使得两个间隔完全对齐.在另一方面,该精度下,该>0.5测试使得间隔[0,0.5][0.500001,0.999999]这显然有利于数字的不平等<=0.5.事实上,这个比例是500001:499999,这显然与50:50明显不同,但差异完全相同.

  • 关于精度的说明很好.无数次重复随机数生成,"可忽略的"不平衡比率可能会起作用,这取决于应用(赌场/法律/物理软件等,尽管这些可能使用专门的RNG).JS使用64位浮点数,大约15位等效数字的定点精度,所以对于大多数用途它应该没问题. (3认同)