Run*_*oop 71
正如下面其他帖子所指出的,最好使用arc4random_uniform.(当这个答案最初编写时,arc4random_uniform不可用).除了避免模数偏差之外arc4random() % x,它还避免了arc4random在短时间帧内递归使用时的播种问题.
arc4random_uniform(4)
Run Code Online (Sandbox Code Playgroud)
将生成0,1,2或3.因此您可以使用:
arc4random_uniform(51)
Run Code Online (Sandbox Code Playgroud)
只需在结果中加50即可得到50到100(含)之间的范围.
Jus*_*tyn 27
扩展JohnK评论.
建议您使用以下函数返回一个范围随机数:
arc4random_uniform(51)
Run Code Online (Sandbox Code Playgroud)
这将范围返回一个随机数0来50.
然后你可以添加你的下限,如:
arc4random_uniform(51) + 50
Run Code Online (Sandbox Code Playgroud)
这将范围返回一个随机数50来100.
我们使用的原因arc4random_uniform(51)了arc4random() % 51是为了避免模偏置.这在手册页中突出显示如下:
arc4random_uniform(upper_bound)将返回小于upper_bound的均匀分布的随机数.arc4random_uniform()建议使用像``arc4random()%upper_bound''这样的结构,因为当上限不是2的幂时,它避免了"模偏差".
简而言之,您可以生成更均匀分布的随机数.
Vai*_*ran 18
int fromNumber = 10;
int toNumber = 30;
int randomNumber = (arc4random()%(toNumber-fromNumber))+fromNumber;
Run Code Online (Sandbox Code Playgroud)
将产生和randon number之间,即103011,12,13,14......29
| 归档时间: |
|
| 查看次数: |
53378 次 |
| 最近记录: |