嗨,我正在研究一个monty hall发生器,在我的代码的一部分,我需要它生成随机数2或3.它不能是1,2,3但计算机需要在2或3之间选择.谢谢!
我试过 randomCarDoor = ( rand() % 3 ) + 1;但不行.
randomCarDoor = ( rand() % 3 ) + 1;
它给了我数字,1,2,3但我只想要2和3
您可以使用随机值的低阶位,但这是非常危险的,因为一些伪随机数生成器不能在低阶位上提供足够的分散:
int two_or_three = 2 + rand() % 2;
Run Code Online (Sandbox Code Playgroud)
更好的方法是使用指定为具有平坦分布的随机数的大小:
int two_or_three = 2 + (rand() >= RAND_MAX / 2);
Run Code Online (Sandbox Code Playgroud)
如果您想要数字1和3,这里有一个适用于任何数字对的简单解决方案:
int random_value = (rand() < RAND_MAX / 2) ? 1 : 3;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |