arc4random
使用Rivest Cipher 4。它是一个替代密码,就像最粗俗的凯撒密码一样。对于替换,它使用 S-boxes,它显然扩展为替换框。简单来说,S-Box 可以称为查找表,您可以在其中查找字节替换。阅读更多关于S-box 的信息。
在这里,S-Box 可以处于 2^1700 种不同的状态(简单地说,它可以提供那么多变体替换查找表,这通常可以衡量密码强度。)。整个过程产生伪随机数,这意味着这些数字不会是真正的随机数(我不确定是否已经实现了真随机数的生成。),即数字将取决于确定性的东西。该函数可以为您提供 0-4294967296 范围内的任何数字。
rand()
那么它比普通的和有什么优势呢random()
?它具有更高的范围(希望比这两个更具随机性)。但是如果你用来获得一个小的随机数,优势就会减弱,我看到你正在这样做。
[derivationArray objectAtIndex:(arc4random() %derivationCount)]
因此,通过对 arc4random() 输出进行模除,您将最终结果限制在 0 - derivationCount 的范围内。
还有很多解释!但如果您只想要函数定义,请阅读手册!.
从评论编辑:
而不是模偏差,使用arc4random_uniform()
. 仍然不能保证这些数字不会重复。