我意识到Swift书籍提供了一个随机数生成器的实现。复制和粘贴这个实现是最佳实践吗?或者有没有这样的库,我们现在就可以使用?
当前回答
Swift 4 + 2。
Xcode 10附带的Swift 4.2为许多数据类型引入了新的易于使用的随机函数。
只需在数值类型上调用random()方法。
let randomInt = Int.random(in: 0..<6)
let randomDouble = Double.random(in: 2.71828...3.14159)
let randomBool = Bool.random()
其他回答
我已经能够使用rand()来获得一个随机的CInt。你可以使用这样的方法使它成为Int型:
let myVar: Int = Int(rand())
你可以使用你最喜欢的C随机函数,并在需要时将值转换为Int。
var randomNumber = Int(arc4random_uniform(UInt32(5)))
这里5将确保随机数是从0到4生成的。您可以设置相应的值。
斯威夫特4.2
拜拜导入Foundation C库arc4random_uniform()
// 1
let digit = Int.random(in: 0..<10)
// 2
if let anotherDigit = (0..<10).randomElement() {
print(anotherDigit)
} else {
print("Empty range.")
}
// 3
let double = Double.random(in: 0..<1)
let float = Float.random(in: 0..<1)
let cgFloat = CGFloat.random(in: 0..<1)
let bool = Bool.random()
使用random(in:)从范围中生成随机数字。 randomElement()返回nil如果范围是空的,所以你打开返回的Int?用if let。 使用random(in:)生成随机Double、Float或CGFloat,使用random()返回随机Bool类型。
更多@官方
你可以像这样使用GeneratorOf:
var fibs = ArraySlice([1, 1])
var fibGenerator = GeneratorOf{
_ -> Int? in
fibs.append(fibs.reduce(0, combine:+))
return fibs.removeAtIndex(0)
}
println(fibGenerator.next())
println(fibGenerator.next())
println(fibGenerator.next())
println(fibGenerator.next())
println(fibGenerator.next())
println(fibGenerator.next())
你可以像在C中那样做:
let randomNumber = arc4random()
推断randomNumber类型为UInt32(32位无符号整数)
推荐文章
- 如何删除默认的导航栏空间在SwiftUI导航视图
- 如何在Ruby中生成a和b之间的随机数?
- 如何在iOS中使用Swift编程segue
- Swift -整数转换为小时/分钟/秒
- 如何舍入一个双到最近的Int在迅速?
- 扁平化数组的数组在Swift
- Swift:声明一个空字典
- java.util.Random真的那么随机吗?我怎么能生成52!(阶乘)可能的序列?
- 从数组中随机选择一个元素
- 在Swift中如何调用GCD主线程上的参数方法?
- swift语言中的结构与类
- 我如何在Swift连接字符串?
- 我应该如何从字符串中删除所有的前导空格?- - - - - -斯威夫特
- 使用该集合的原因。种子功能
- Swift:理解// MARK