0

如何在一个范围内创建一个随机数?我尝试了以下代码,但它没有完成我的任务。

int fromNumber = 10;
int toNumber = 30;
int randomNumber = (arc4random()%(toNumber-fromNumber))+fromNumber; 
4

2 回答 2

4

在 4 到 10 之间有 7 个数字。为此,建议使用 arc4random_uniform() 而非 arc4random()。

int randomNumber = arc4random_uniform(7) + 4

更一般的情况是arc4random_uniform(upper_bound - lower_bound + 1) + lower_bound

于 2013-08-15T22:32:05.347 回答
1

更新
我之前不知道 arc4random_uniform() 所以我推荐https://stackoverflow.com/a/18262992/2611613作为答案。我在下面链接的答案仍然很好地解释了解决这个问题的一般方法,而不用担心语言。


你的答案应该有效。在不知道你所拥有的有什么问题的情况下,我只能猜测问题所在。

目前你有

int randomNumber = ( arc4random() % ( toNumber - fromNumber ) ) + fromNumber; 

这会产生一个 [from-to] 独占范围,您将永远无法获得 toNumber 的值。如果您希望您的随机数能够包含 toNumber

int randomNumber = ( arc4random() % ( toNumber - fromNumber + 1 ) ) + fromNumber; 

有了这个,你会得到一个范围 [from-to] 包括在内。

您可能会查看https://stackoverflow.com/a/363732/2611613以获得有关其工作原理的非常好的解释。

于 2013-08-15T22:39:04.233 回答