如何在swift中生成从1到4和8的随机数

Ram*_*har 1 random arc4random ios sprite-kit swift

我现在正在制作 iOS SpriteKit 游戏,这是我第一次开发任何应用程序,这对我来说是一项艰巨的挑战,因为这确实是第一次大型项目。我的游戏是骰子游戏,我将移动定义为 4 个数字。因此,每当我触摸屏幕时,玩家都会移动 4 个方块,但现在我想将骰子添加到游戏中,我需要从 1 到 4 和 8 的数字。所以骰子中的数字将是 1,2,3,4 和 8 。我知道在 Swift 中我们可以使用“arc4random”获得随机数,但是如何获得数字 1 到 4 以及 8 我可以使用 arc4random 做到这一点吗?如果可能的话,我需要 4 和 8 的数字来增加 20% 的频率。任何帮助都会非常有帮助。谢谢。

vac*_*ama 8

将您sides放入数组并用于randomElement()执行滚动:

\n
let sides = [1, 2, 3, 4, 8]\nlet roll = sides.randomElement()!\n
Run Code Online (Sandbox Code Playgroud)\n
\n

如果可能的话,我需要 4 和 8 个号码才能使出现频率增加 20%

\n
\n

这意味着,每当其他出现 5 次时,4和应该出现 6 次。因此,将-中的每个 5 个放入数组中,并且 和 中每个 6个:81348

\n
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]\nlet roll = sides.randomElement()!\n
Run Code Online (Sandbox Code Playgroud)\n

注意:在这里强制解开randomElement()with的结果是完全安全且适当的!,因为只有当集合为空时才randomElement()返回,而我们知道它\xe2\x80\x99s 不是。nil

\n
\n

另外,请查看MartinR 的randomNumber(probabilities:)函数

\n

你可以像这样使用他的函数:

\n
let sides = [1, 2, 3, 4, 8]\nlet probabilities = [1.0, 1.0, 1.0, 1.2, 1.2]\n\nlet rand = randomNumber(probabilities: probabilities)\nlet roll = sides[rand]\n
Run Code Online (Sandbox Code Playgroud)\n