确保random()不返回0?

use*_*776 2 random objective-c

我正在查看random()的文档:

https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man3/srandomdev.3.html#//apple_ref/c/func/random

它返回0到(2**31)-1范围内的连续伪随机数.

我不希望它永远返回0.

我正在考虑写作:

long rand = random() + 1;
Run Code Online (Sandbox Code Playgroud)

但如果我没弄错的话,32位处理器上的长度可能是32位.我想我会冒险堆栈溢出然后.

获得1到(2**31)-1之间的随机数的最佳方法是什么?

Tim*_*Tim 5

NSUInteger r = arc4random_uniform(N) + 1;

这将生成介于1和N之间的数字.arc4random_uniform(N)生成介于0和N-1之间的数字.

你应该没有溢出问题.