random-swift
为使用 Swift 编写的 iOS & macOS 应用生成随机数据、内容和资产的工具。
系统要求
- iOS v11.0 或更高版本
- macOS v10.15 或更高版本(Mac Catalyst)
安装
random-swift 通过 CocoaPod 可用。要安装它,只需将以下行添加到您的 Podfile 中即可:
pod 'random-swift'
导入选项
导入到整个项目
打开 AppDelegate.swift
在类顶部添加一个导出导入语句,如下:
@_exported import random_swift
该框架现在存在于项目中每个类中。
注意:关于 @_exported import
存在一些不同的看法(见论坛),即框架之间可能存在对象和类名的命名冲突风险。然而,如果您在项目中没有遇到与导出导入方法相关的问题,那么就没有问题,这种便利的权衡可能值得。
将导入添加到类或文件
安装完成后,将其导入到您的类中
import random_swift
用法
目前支持
全局访问性与持久配置
-
通过利用Swift内置的底层
arc4random()
随机数生成器确保安全和真正的随机性 -
Random
作为一个共享实例,在导入的作用域内(类、项目等)可用// access it with: Random.(type)
-
配置集在共享实例上持续整个应用程序会话期间
// setup an IntRange configuration let intRange = IntRange(lower: 4, upper: 100) // setup a percentage range configuration let pctRange = PercentageRange(min: 0.10, max: 0.98) // assign the configurations Random.intRange = intRange Random.percentageRange = pctRange
在此共享实例仍然在内存中(即应用程序仍在运行/未终止或置于后台),将使用上次使用的配置作为任何需要范围或上限值的随机值调用默认配置。
-
如果需要动态更改它们以对新的请求,您可以动态使用新的范围配置
以下是一个使用新范围配置检索新随机值的示例
// setup: let newIntRange = IntRange(lower: 1, upper: 5000) // get a random int value within the range let rangedInt = Random.int.withinRange(range: newIntRange) // get a random int value anywhere between 0 and the newIntRange.upper Random.int.withUpperLimit(of: newIntRange)
生成随机单词
Random支持真正的随机单词生成。
随机单词来自一个包含235,886个单词的静态字典,所有这些默认打包在macOS中。
函数
-
获取一个随机单词
let randomWord = Random.word
### 随机值生成
随机整数
函数
-
获取一个随机的
Int
let randomInt = Random.int.value()
-
获取一个小于特定
IntRange
上界限制的随机Int
// setup a range let range = IntRange(lower: 10, upper: 200) // get a random int value within the range let rangedInt = Random.int.withinRange(range: range)
-
获取一个位于给定范围之内的随机
Int
值,介于上下界之间// setup a range let range = IntRange(lower: 10, upper: 250) // get a random int value between range.lower and range.upper let randomWithinRange: Int = Random.int.withinRange(range: newIntRange)
计算属性
-
获取一个随机的
Int
let randomInt = Random.int.value
注意:以下计算属性需要事先进行配置。
如果这些条件成立,将始终返回 0
- A config has not been set by using a function call
- or by directly configuring `Random.intRange`.
用法基本上与函数调用相同
-
获取一个小于特定
IntRange
上界限制的随机Int
// setup a range & configure let range = IntRange(lower: 10, upper: 200) Random.intRange = range // get a random int value within the range let rangedInt = Random.int.withinUpperLimit
-
获取一个位于给定范围之内的随机
Int
值,介于上下界之间// setup a range & configure let range = IntRange(lower: 10, upper: 250) Random.intRange = range // get a random int value between range.lower and range.upper let randomWithinRange: Int = Random.int.withinRange // randomWithinRange == some Int between 10 and 200, exclusive of 200 (so max 199)
随机百分比
函数
-
获取一个随机百分比(也称为
Double
),可选最大小数位四舍五入let randomPct = Random.percentage.value(roundedTo: 5) // returns percentage with no more than 5 place values // e.g. 0.45369
-
获取一个小于给定
PercentageRange
最大限制的随机百分比,可选地四舍五入到最大小数位数值// setup a range let range = PercentageRange(lower: 0.10, upper: 0.999) // get a random int value within the range let rangedPct: Double = Random.percentage.withUpperLimit(of: range, maxDecimalPlaces: 3) // returns percentage with no more than 3 decimal places // e.g. 0.294
-
获取一个位于给定范围之内的随机百分比值,介于最小和最大限制之间
// setup a range let range = PercentageRange(lower: 0.15, upper: 0.322) // get a random int value between range.lower and range.upper let randomPctWithinRange: Double = Random.percentage.withinRange(range, maxDecimalPlaces: 1) // returns percentage with no more than 1 decimal place // e.g. 0.6
计算属性
-
获取一个随机百分比(也称为
Double
)let randomPct: Double = Random.percentage.value
注意:以下计算属性需要事先进行配置。
如果这些条件成立,将始终返回 0.0
- A config has not been set by using a function call
- or by directly configuring `Random.percentageRange`.
用法基本上与函数调用相同
-
获取一个小于给定
PercentageRange
最大限制的随机百分比// setup a range & configure shared instance let range = PercentageRange(lower: 0.15, upper: 0.322) Random.intRange = range // get a random percentage value within the range let rangedPct: Double = Random.percentage.withUpperLimit
-
获取一个位于给定范围之内的随机百分比值,介于最小和最大限制之间
// setup a range & configure let range = PercentageRange(lower: 0.01, upper: 0.9) Random.intRange = range // get a random int value between range.lower and range.upper let randomPctWithinRange: Double = Random.percentage.withinRange // randomWithinRange == some Int between 0.01 and 0.9, exclusive of 0.9 (so max 0.89)
作者
原作者: Dan Burkhardt @GigabiteLabs Twitter: @GigabiteDan
贡献者: (暂时没有其他人 ;)
许可证
random-swift 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。