ios - 如何快速生成从 1 到 4 和 8 的随机数
问题描述
我现在正在制作 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 个放入您的数组中,并将 and 中的每个 64
个8
:
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]
推荐阅读
- python - PyQt5 - QTableView + QAbstractTableModel - html 格式单元格/列文本
- r - 在 R 中使用 ggplots 制作趋势变化图
- linux - 如何只允许来自某个 USB 端口的某些键命令
- css - Css - menu-wrapper 的显示定位问题
- powershell - 设置 PowerShell Azure SQL 连接字符串参数
- android - Android Studio - 检测到 Vanguard(检测到不兼容的软件),而它甚至没有作为进程安装或打开
- c++ - 在联合崩溃程序中分配 std::function
- python - 如何通过检查值将键添加到字典
- angular - 离子电容器本地通知
- c# - C#我们可以使用windows登录连接sqlserver数据库吗?