博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Swift] 随机数 | Random numbers
阅读量:5043 次
发布时间:2019-06-12

本文共 2813 字,大约阅读时间需要 9 分钟。

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝()
➤GitHub地址:
➤原文地址: 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

(1)、生成随机数

random(in:) :适用于所有数字类型生成随机数的方法 ,它返回给定范围内的随机数。并且适用于布尔类型。

1 print(Int.random(in: -100...100)) 2 //Print -89 3  4 print(Int32.random(in: -100...100)) 5 //Print 75 6  7 print(Int64.random(in: -100...100)) 8 //Print 98 9 10 print(UInt32.random(in: 0...100))11 //Print 412 13 print(UInt64.random(in: .min ... .max))14 //Print 316364909618678596515 16 print(Double.random(in: 0..<1))17 //Print 0.4256745831724255718 19 print(Float.random(in: 0..<1))20 //Print 0.799269921 22 print(Bool.random())23 //Print true

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数。

这个api也很好的避免了modulo bias偏差的发生。

1 func coinToss(count tossCount: Int) -> (heads: Int, tails: Int) { 2     var tally = (heads: 0, tails: 0) 3     for _ in 0..

(2)、集合的随机元素:randomElement()

randomElement()方法的返回值为可选类型。

如果集合为空集合,则返回的值为nil

1 let arr1:[Int] = [] 2 print(arr1.randomElement()) 3 //Print nil 4  5  6 let arr2:[String] = ["s","t","r","e","n","g","t","h","e","n"] 7  8 //Optional可选类型 9 print(arr2.randomElement())10 //Print Optional("g")11 12 //强制解包使用用感叹号!13 print(arr2.randomElement()!)14 //Print g

(3)、集合元素随机顺序:shuffle()

适用于MutableCollection和RandomAccessCollection的所有类型。

1 let numbers = (1...10).shuffled() 2 print(numbers) 3 //Print [2, 7, 6, 5, 3, 10, 9, 1, 8, 4] 4  5 let mutableNumbers = Array(10...20).shuffled() 6 print(mutableNumbers) 7 //Print [14, 13, 20, 16, 18, 17, 19, 12, 15, 11, 10] 8  9 let arr:[String] = ["s","t","r","e","n","g","t","h","e","n"].shuffled()10 print(arr)11 //Print ["s", "r", "h", "e", "n", "t", "t", "g", "e", "n"]

(4)、自定义随机数生成器

标准库附带一个默认的随机数生成器Random.default,对于大多数简单的用例是一个不错的选择。

如果有特殊要求,可以采用RandomNumberGenerator协议实现自己的随机数生成器。

用于生成随机值的所有API都提供了一个允许用户传入其首选随机数生成器的重载:

1 //一个模拟“random.default”的伪随机数生成器。 2 struct MyRandomNumberGenerator: RandomNumberGenerator { 3     var base = Random.default 4     mutating func next() -> UInt64 { 5         return base.next() 6     } 7 } 8  9 var customRNG = MyRandomNumberGenerator()10 Int.random(in: 0...100, using: &customRNG)11 //Print 4

(5)、扩展您随机数Random类型

可以按照相同的模式,为您自己的类型提供随机数据API。

1 enum Suit: String, CaseIterable { 2     case diamonds = "♦" 3     case clubs = "♣" 4     case hearts = "♥" 5     case spades = "♠" 6  7     static func random
(using generator: inout T) -> Suit { 8 // Using CaseIterable for the implementation 9 return allCases.randomElement(using: &generator)!10 11 }12 13 static func random() -> Suit {14 return Suit.random(using: &Random.default)15 }16 }17 18 let randomSuit = Suit.random()19 randomSuit.rawValue 20 //Print ♣

 

转载于:https://www.cnblogs.com/strengthen/p/10305789.html

你可能感兴趣的文章