小编And*_*yer的帖子

如何在C中以"相同概率"获得0到N-1的随机数?

我知道这可能是一个"老"问题,但我想关注概率.

第一个问题是:在C,rand()将从给一个号码0RAND_MAX,并在此区间的每个号码必须被由所选择的相同的概率rand()

第二个问题:如果rand()允许每个数0RAND_MAX具有将被选择了相同(或近似相同)的概率,当我想从0得到一个随机数到N-1(N-1 <RAND_MAX),我会做一般来说:

rand()%N
Run Code Online (Sandbox Code Playgroud)

但如果RAND_MAX不是N的倍数,则从0到N-1中选择的随机数的概率可能不相同

例如,假设RAND_MAX = 150且N = 100,当我这样做时rand()%100,从0到49的数字将被选择的概率高于从50到99的数字,因为150不是100的倍数.

C中是否有算法或函数,可以让每个随机数具有相同的概率选择?

c random algorithm

5
推荐指数
1
解决办法
1274
查看次数

标签 统计

algorithm ×1

c ×1

random ×1