C中的这些随机数生成器中的哪一个产生更好的随机性:rand,random或arc4random?
注意:只是为了使问题清楚,这不是真正的随机性的问题,只是这3个之间的冲突.
正如所指出的,这个问题没有什么意义,因为这不是关于C,而是关于一个具体的实现,在我的情况下,可可(更具体地说是iphone sdk,但是我的猜测是他们是一样的功能去).不过,这里有一些有用的信息.我最后通过实施arc4random,主要是因为它的易用性(不需要播种),这是没有人指出的重要因素.
我正在关闭这个问题,并为可可开发商添加可可标签,寻找有关RNG的信息.非常感谢那些贡献的人,并为此感到困惑.
解决方法 在这些函数中,只有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的最终真相所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)