C:关于兰特,随机和arc4random的最终真相

C:关于兰特,随机和arc4random的最终真相,第1张

概述这个主题有很多矛盾的信息.所以让我们尝试就一个确定的答案达成一致: C中的这些随机数生成器中的哪一个产生更好的随机性:rand,random或arc4random? 注意:只是为了使问题清楚,这不是真正的随机性的问题,只是这3个之间的冲突. 正如所指出的,这个问题没有什么意义,因为这不是关于C,而是关于一个具体的实现,在我的情况下,可可(更具体地说是iphone sdk,但是我的猜测是他们是一样的 这个主题有很多矛盾的信息.所以让我们尝试就一个确定的答案达成一致:

C中的这些随机数生成器中的哪一个产生更好的随机性:rand,random或arc4random?

注意:只是为了使问题清楚,这不是真正的随机性的问题,只是这3个之间的冲突.

正如所指出的,这个问题没有什么意义,因为这不是关于C,而是关于一个具体的实现,在我的情况下,可可(更具体地说是iphone sdk,但是我的猜测是他们是一样的功能去).不过,这里有一些有用的信息.我最后通过实施arc4random,主要是因为它的易用性(不需要播种),这是没有人指出的重要因素.

我正在关闭这个问题,并为可可开发商添加可可标签,寻找有关RN​​G的信息.非常感谢那些贡献的人,并为此感到困惑.

解决方法 在这些函数中,只有rand是标准C的一部分.随机是POSIX的一部分,arc4random仅在BSD(和派生)中提供.所以只有兰德是“在C”.

对于兰特,C标准对发电机的质量没有任何意义,即返回总是相同的数字将符合.它表示数字必须在0和RAND_MAX之间. RAND_MAX的值和正在使用的精确算法是实现定义的(尽管RAND_MAX必须至少为32767).

对于随机的POSIX specifies,默认情况下它必须具有至少2 ^ 31的周期,并且如果initstate被调用256字节的状态,则它必须具有至少2 ^ 69的周期;其他细节再次被实现定义.

对于arc4random,具体实现是其定义的一部分(RC4).它指定它给出2 ^ 32个不同的值;我找不到任何东西
期.

要详细比较它们,必须知道您所参考的具体实现.

总结

以上是内存溢出为你收集整理的C:关于兰特,随机和arc4random的最终真相全部内容,希望文章能够帮你解决C:关于兰特,随机和arc4random的最终真相所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1250192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存