加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:49:00 所属栏目:百科 来源:网络整理
导读:这个主题有很多矛盾的信息.所以让我们尝试就一个确定的答案达成一致: C中的这些随机数生成器中的哪一个产生更好的随机性:rand,random或arc4random? 注意:只是为了使问题清楚,这不是真正的随机性的问题,只是这3个之间的冲突. 正如所指出的,这个问题没有什
这个主题有很多矛盾的信息.所以让我们尝试就一个确定的答案达成一致:

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个不同的值;我找不到任何东西
期.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读