如何在范围内创建随机数?我尝试了下面的代码,但它没有完成我的任务。
int fromNumber = 10;
int toNumber = 30;
int randomNumber = (arc4random()%(toNumber-fromNumber))+fromNumber;
答案 0 :(得分:4)
有4个数字,介于4和10之间。为此,建议使用arc4random_uniform()而不是arc4random()。
int randomNumber = arc4random_uniform(7) + 4
更一般的情况是arc4random_uniform(upper_bound - lower_bound + 1) + lower_bound
。
答案 1 :(得分: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;
通过这种方式,你可以获得[从 - 到]的范围。
您可以查看https://stackoverflow.com/a/363732/2611613,了解其工作原理。