如何在一个范围内创建一个随机数?我尝试了以下代码,但它没有完成我的任务。
int fromNumber = 10;
int toNumber = 30;
int randomNumber = (arc4random()%(toNumber-fromNumber))+fromNumber;
如何在一个范围内创建一个随机数?我尝试了以下代码,但它没有完成我的任务。
int fromNumber = 10;
int toNumber = 30;
int randomNumber = (arc4random()%(toNumber-fromNumber))+fromNumber;
在 4 到 10 之间有 7 个数字。为此,建议使用 arc4random_uniform() 而非 arc4random()。
int randomNumber = arc4random_uniform(7) + 4
更一般的情况是arc4random_uniform(upper_bound - lower_bound + 1) + lower_bound
。
更新
我之前不知道 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以获得有关其工作原理的非常好的解释。