|
|
1
13
啊,旧的“5”问题。答案如下:
如果你要把10件事分成2件
平等的
每个部分,你需要5件东西。第一部分从0到4,第二部分从5到9。所以…
|
|
|
2
7
为什么要自己动手?python有random.choice:) random.choice([0,1])会给你0/1的机会——它是Python的一个标准部分,由编写random.random的同一个人编码(因此比其他人更了解它的语义)。 |
|
|
3
4
对于第一个近似值,两者都有效。 最好的方法是选择一个随机生成器,它专门发出布尔值或带范围的整数。然后你可以精确地确定范围。 像“相等”这样的浮点运算无论如何都是不确定的。 |
|
|
4
3
二进制中,.5是.1000000000…. 所以,基本上,问题归结为,“在小数点后的第一个二进制数字是什么?”0(对于<.5)或1(对于.5或更高版本)? |
|
|
5
1
对于一个特定的系统,如果你真的想知道的话,你应该测试它。但可能需要一段时间:—) 我同意其他海报的说法,第一顺序,这无关紧要。如果真的很重要,你还是需要一个更好的RNG。 编辑: 我刚刚尝试了C中的默认RNG,尝试了100000000次,答案是相同的… |
|
|
6
1
|
|
|
7
0
但这假设您的浮点支持足以满足您的精度要求(因为它从来没有 确切地 ) |
|
|
8
0
如果我想要50%的机会,我会检查LSB(最低有效位)。 |
|
|
9
0
如果你对随机数那么挑剔,不要依赖于任何内置的东西。从你信任的地方(我信任Boost,为了它的价值),获得一个有良好文档记录的RNG,并阅读文档。过去标准的RNG是出了名的糟糕,我仍然不相信它们。 或者,使用一个整数rng,在一个范围内为您提供离散值,并将该范围除以一半。根据我的经验,RNG是积分的,浮点函数简单地除以范围的顶部。 当然,如果这是真的,你就有答案了。如果整数rng生成0、1、2和3,则浮点等效值将为0.0、0.25、0.5和0.75,因此答案是测试<0.5。 如果RNG不是基于积分计算,那么它是基于浮点计算,因此是不精确的。在这种情况下,无论您测试<=还是<,都无关紧要,因为无法保证精确到0.5的计算结果。 因此,答案可能是测试<0.5,如果它有区别的话,它很可能是正确的。 |
|
|
10
0
如果你需要真正的随机数,你可以尝试 random.org . 他们提供一个连接到设备的网络服务,检测来自宇宙的噪音。从技术上讲,仍然不是随机的,但我想已经足够接近了。 他们有各种方式来进行查询,例如黑白图像。 |
|
|
11
-2
没关系。这两个公式都会产生所需的结果。 |