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

标签 ios swift random sprite-kit arc4random

我现在正在制作一款 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

这意味着,48 每次出现 5 次时应该出现 6 次。所以 1 各放 5 次>-3 在你的数组中,48 各 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/

相关文章:

c - 如何将 rand() 结果设置为一定范围内的值,包括负值?

javascript - 随机化此幻灯片中的第一张图片?

javascript - 使用 javascript 生成每次都相同的 "random"数字(即种子随机数)

iphone - 将我的 UIView 添加到 Storyboard 中的 ViewController

iOS Touch ID 工作流程令人困惑

ios - 如何在 Swift 4.0 中使用 DispatchQueue

ios - 在 iOS 中强制关闭应用程序时处理像 whatsapp 这样的通知?

ios - Offload App 删除 iOS 11 中的内容

ios - 如何为 Alamofire POST 请求正文设置 UTF8 编码?

ios - UISearchBar 对不同的值使用多个单词,iOS,Swift