首页 > 解决方案 > 如何以随机方式在两个值之间进行选择?

问题描述

我正在尝试随机选择两个数字之一:2-2. 有没有办法做到这一点?我正在尝试实现一种算法来创建迷宫。

标签: crandomnumbers

解决方案


你有来自 C 标准库,它返回范围 [0, ]rand()内的伪随机整数。RAND_MAX您可以使用此函数并选择两个数字之一,检查返回的值是高于还是低于RAND_MAX/2

首先,使用srand()一些种子来初始化伪随机数生成器。这样做很常见,time()因为它每次都返回不同的值。

srand(time(NULL));

int rnd = rand();
int result = (rnd > RAND_MAX/2) ? 2 : -2;

或者,您可以使用由返回的值的最低有效位rand(),正如另一个答案中所建议的那样,因为返回的值的一半是奇数,一半是偶数:

int result = (rnd & 1) ? 2 : -2;

推荐阅读