猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
如何在Swift中生成一个随机数而不重复以前的随机数?
我对Swift和编程逻辑很陌生,所以请多多包涵
如何在Swift中生成0到9之间的随机数而不重复最后生成的数字?因为相同的数字不会连续出现两次。
吃鸡游戏
浏览 599
回答 3
3回答
阿波罗的战车
Swift 5更新这是一个很好的技巧,可以从以前不仅仅选择的数字中进行平均选择。您有10个数字,但只想从9个数字中选择(0到9,但不包括前一个数字)。如果将范围减少1,则可以从9个随机数中进行选择,然后将重复的数字替换为该范围的前一个最高数字。这样,您每次只需生成一个随机数即可获得统一性。这可以Int.random(in:excluding:)在传递所需值的位置实现exclude。extension Int { static func random(in range: ClosedRange<Int>, excluding x: Int) -> Int { if range.contains(x) { let r = Int.random(in: Range(uncheckedBounds: (range.lowerBound, range.upperBound))) return r == x ? range.upperBound : r } else { return Int.random(in: range) } }}例:// Generate 30 numbers in the range 1...3 without repeating the// previous number var r = Int.random(in: 1...3)for _ in 1...30 { r = Int.random(in: 1...3, excluding: r) print(r, terminator: " ")}print()1 3 2 1 2 1 3 2 1 3 1 3 2 3 1 2 3 2 1 3 2 1 3 1 2 3 2 1 2 1 3 2 3 2 1 3 1 2 1 2上一个答案:var previousNumber = arc4random_uniform(10) // seed the previous numberfunc randomNumber() -> UInt32 { var randomNumber = arc4random_uniform(9) // generate 0...8 if randomNumber == previousNumber { randomNumber = 9 } previousNumber = randomNumber return randomNumber}
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Swift
iOS为什么要获取webview内容高度?
1 回答
关于Swift Playgrounds 编程问题?
1 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续