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 次 |
最近记录: |