我知道这可能是一个"老"问题,但我想关注概率.
第一个问题是:在C,rand()将从给一个号码0到RAND_MAX,并在此区间的每个号码必须被由所选择的相同的概率rand()?
第二个问题:如果rand()允许每个数0到RAND_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中是否有算法或函数,可以让每个随机数具有相同的概率选择?