有没有比以下更好的方法:
#define BOUND 7
int r;
int e = 1;
r = rand() % BOUND;
while (r == e){
r = rand() % BOUND;
}
用于生成除值
e
之外的范围内的数字? 最佳答案
你要的是在 [0, BOUND)
范围内生成一个随机数,不包括值 e
algorithm explained here 似乎是不使用循环的最佳方法。
这是C代码:
#define BOUND 7
int r;
int e = 1;
r = rand() % (BOUND-1);
if (r >= e){
r = r+1;
}
因此,您基本上会在
[0, BOUND-1)
范围内生成一个值,如果该值大于或等于排除值 e
,则将随机数加一。请记住, 将
rand
与 %
一起使用并不能保证生成的数字的严格均匀分布。有关更多信息,请访问 check out this question/answers 。关于c - 在不连续范围内生成随机数的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47271305/