如何制作一个在2或3之间选择的随机数发生器.(不是1,2,3)

Sho*_*ine 5 c random

嗨,我正在研究一个monty hall发生器,在我的代码的一部分,我需要它生成随机数2或3.它不能是1,2,3但计算机需要在2或3之间选择.谢谢!

我试过 randomCarDoor = ( rand() % 3 ) + 1;但不行.

randomCarDoor = ( rand() % 3 ) + 1;

它给了我数字,1,2,3但我只想要23

chq*_*lie 2

您可以使用随机值的低阶位,但这是非常危险的,因为一些伪随机数生成器不能在低阶位上提供足够的分散:

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)

如果您想要数字13,这里有一个适用于任何数字对的简单解决方案:

int random_value = (rand() < RAND_MAX / 2) ? 1 : 3;
Run Code Online (Sandbox Code Playgroud)