Ala*_*lan 13 random objective-c
使用:
value = arc4random() % x
Run Code Online (Sandbox Code Playgroud)
如何避免或消除模偏差?
至少根据维基百科的说法,在编程机会游戏时,模偏差是一个问题.
小智 49
使用arc4random_uniform(x).这适合你.
根据手册页:
arc4random_uniform()将返回一个小于的均匀分布的随机数upper_bound.arc4random_uniform()建议使用结构,arc4random() % upper_bound因为当上限不是2的幂时,它避免了"模偏差".
Can*_*der 14
arc4random返回一个32位无符号整数(0到2 32 -1).
对于足够小的x,可能没有明显的模偏差.但是,如果您想要确定,请执行以下操作:
Y = 2 p,其中2 P-1 <X≤2 p
val = arc4random() % y;
while(val >= x)
val = arc4random() % y;
Run Code Online (Sandbox Code Playgroud)