首页 > 解决方案 > 如何快速生成从 1 到 4 和 8 的随机数

问题描述

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

标签: iosswiftrandomsprite-kitarc4random

解决方案


将您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 个放入您的数组中,并将 and 中的每个 648

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 的randomNumber(probabilities:)函数

你会像这样使用他的功能:

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]

推荐阅读