我现在正在制作一个iOS SpriteKit游戏,这是我第一次开发任何应用程序,这对我来说都是一个艰难的挑战,因为这是我第一次真正的一个大项目。我的游戏是一个骰子游戏,我把移动定义为4个数字。所以当我触摸屏幕时,玩家移动4个方块,但现在我想在游戏中加入骰子,我需要1到4和8的数字。所以骰子里有1,2,3,4和8个数字。我知道在Swift中,我们可以得到带有arc4random的随机数,但是我如何得到1到4,以及8,我可以用arc4random来做,如果可能的话,我需要4和8的数字来增加20%的频率。
任何帮助都会很有帮助的。谢谢。
最佳答案
将sides
放入数组并使用arc4random_uniform
执行滚动:
let sides = [1, 2, 3, 4, 8]
let roll = sides[Int(arc4random_uniform(UInt32(sides.count)))]
如果可能的话,我需要4和8个数字来增加20%的频率
这意味着,
4
和8
应该每5次出现6次。因此,将1
-3
中的每一个放入数组中5,将4
和8
中的每一个放入数组中6:let sides = [1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8]
let roll = sides[Int(arc4random_uniform(UInt32(sides.count)))]
另外,请查看MartinR's
randomNumber(probabilities:)
function。你可以这样使用他的功能:
let sides = [1, 2, 3, 4, 8]
let probabilities = [1.0, 1.0, 1.0, 1.2, 1.2]
let rand = randomNumber(probabilities: probabilities)
let roll = sides[rand]
关于ios - 如何快速生成1到4和8的随机数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51122471/