我意识到Swift书籍提供了一个随机数生成器的实现。复制和粘贴这个实现是最佳实践吗?或者有没有这样的库,我们现在就可以使用?
当前回答
你可以像这样使用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())
其他回答
我使用了下面的代码:
var k: Int = random() % 10;
在Swift 4.2中,您可以通过调用random()方法在任何您想要的数字类型上生成随机数,提供您想要使用的范围。例如,这会生成一个范围为1到9的随机数,两边都包括在内
let randInt = Int.random(in: 1..<10)
其他类型也一样
let randFloat = Float.random(in: 1..<20)
let randDouble = Double.random(in: 1...30)
let randCGFloat = CGFloat.random(in: 1...40)
斯威夫特4.2
Swift 4.2在标准库中包含了一个原生的、功能相当全的随机数API。(Swift Evolution提案SE-0202)
let intBetween0to9 = Int.random(in: 0...9)
let doubleBetween0to1 = Double.random(in: 0...1)
所有的数字类型都有静态随机数(in:),它接受范围并返回给定范围内的随机数
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()
更新日期:2022年6月9日。
斯威夫特5.7
假设我们有一个数组:
let numbers: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
对于iOS和macOS,你可以在Xcode的框架GameKit中使用系统范围内的随机源代码。在这里你可以找到GKRandomSource类及其sharerandom()类方法:
import GameKit
private func randomNumberGenerator() -> Int {
let rand = GKRandomSource.sharedRandom().nextInt(upperBound: numbers.count)
return numbers[rand]
}
randomNumberGenerator()
你也可以使用randomElement()方法返回一个集合的随机元素:
let randomNumber = numbers.randomElement()!
print(randomNumber)
或者使用arc4random_uniform()。注意,该方法返回UInt32类型。
let generator = Int(arc4random_uniform(11))
print(generator)
当然,我们也可以使用makeIterator()方法,该方法返回集合元素上的迭代器。
let iterator: Int = (1...10).makeIterator().shuffled().first!
print(iterator)
你在这里看到的最后一个例子通过静态func random(in range: ClosedRange<Int>) -> Int在指定范围内返回一个随机值。
let randomizer = Int.random(in: 1...10)
print(randomizer)
伪随机双位数生成器drand48()返回0.0到1.0之间的值。
import Foundation
let randomInt = Int(drand48() * 10)
推荐文章
- Java生成两个给定值之间的随机数
- 如何从枚举中选择一个随机值?
- 在Swift中转换字符串为日期
- 点击按钮时如何打开手机设置?
- 在Swift中使用自定义消息抛出错误/异常的最简单方法?
- 编译器错误:带有Objective-C选择器的方法与前面带有相同Objective-C选择器的声明冲突
- 如何在Swift中获得唯一的设备ID ?
- 如何在Swift中获得枚举值的名称?
- random.seed():它做什么?
- Java中生成UUID字符串的有效方法(UUID. randomuuid ().toString()不带破折号)
- 如何调用手势点击在UIView编程在迅速
- 什么是Swift相当于respondsToSelector?
- dyld:库未加载:@rpath/libswift_stdlib_core.dylib
- 如何从字典中获得一个随机值?
- 我如何隐藏在一个Swift iOS应用程序的状态栏?