我现在正在制作一款 iOS SpriteKit 游戏,这是我第一次开发任何应用程序,这对我来说是一项艰巨的挑战,因为这是第一次真正的大项目。我的游戏是骰子游戏,我将移动定义为 4 个数字。因此,每当我触摸屏幕时,玩家移动 4 个方 block ,但现在我想将骰子添加到游戏中,我需要从 1 到 4 和 8 的数字。所以骰子中的数字将是 1、2、3、4 和 8 .我知道在 Swift 中我们可以使用“arc4random”获得随机数,但是我如何获得数字 1 到 4 以及 8 我可以使用 arc4random 来实现吗?如果可能的话,我需要 4 和 8 的数字以增加 20% 的频率。 任何帮助都会非常有帮助。谢谢。
最佳答案
将您的sides
放入一个数组中并使用randomElement()
执行滚动:
let sides = [1, 2, 3, 4, 8]
let roll = sides.randomElement()!
if possible I need 4 and 8 numbers to come 20% more often
这意味着,4
和 8
每次出现 5 次时应该出现 6 次。所以 1
各放 5 次>-3
在你的数组中,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.randomElement()!
注意强制展开 randomElement()
的结果是完全安全和适当的 !
这是因为 randomElement()
仅在集合为空时返回 nil
,我们知道事实并非如此。
另外,查看 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 - 如何在swift中生成从1到4和8的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51122471/