and*_*ewz 22 random arc4random ios
从我可以收集到的内容arc4random()产生的数据要好得多rand(),但是我没有看到种植它的方法,我想只是喜欢使用srand().有办法吗?
Joe*_*oey 22
这不是arc4random的设计目标.正如文件所述:
该
arc4random()功能可以非常快速地提供高质量的32位伪随机数.arc4random()种子本身定期从内核强随机数子系统中描述random(4).
因为无论如何它都是从熵源重新种子本身,你手动播种它什么也得不到,事实上,这种方法并不存在.
你可以在iOS 9中实现这一点.
import GameKit
let source = GKARC4RandomSource(seed: "hello world".data(using: .utf8)!)
source.dropValues(1024)
source.nextInt() // <-- your number
Run Code Online (Sandbox Code Playgroud)
根据文件:
基于Arc4的随机源具有可重复的初始序列.如果用于混淆,则应从开头删除N值,其中N应为大于768的任何数字,以确保刷新初始序列.
因此,只要您使用相同的种子数据(显然不使用!生产代码)和相同数量的删除值,您将获得相同的结果.
在Swift 3中,我在使用srand48()并且drand48()需要种子值时。我做了这个功能,似乎可以很好地满足我的需求:
func seeded_rand(seed:Int, min:Double, max:Double) -> Int
{
srand48(seed)
return Int(round(drand48() * (max-min)) + min)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8558 次 |
| 最近记录: |