POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 4473|回复: 16
打印 上一主题 下一主题

关于CPU产生随机数

[复制链接]
跳转到指定楼层
1#
发表于 2006-10-22 11:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
:p 有没有哪位大大说一下原理,总感觉我这K8产生的随机数随机分布不太好,总容易连续在特定的范围产生数。
2#
 楼主| 发表于 2006-10-22 16:35 | 只看该作者
up up up up up
回复 支持 反对

使用道具 举报

strain 该用户已被删除
3#
发表于 2006-10-22 17:05 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

4#
发表于 2006-10-22 17:13 | 只看该作者
是么?这个和cpu有关系么?

srand(time(null));
rand%?

这个?
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2006-10-22 17:35 | 只看该作者
原帖由 miaohw 于 2006-10-22 17:13 发表
是么?这个和cpu有关系么?

srand(time(null));
rand%?

这个?



当然是CPU产生的,难道是主板:wacko: 你这个函数也是要调用CPU相关单元的。

我真不知。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2006-10-22 17:36 | 只看该作者
原帖由 strain 于 2006-10-22 17:05 发表

不是你的k8的原因



:wacko: 那是?
回复 支持 反对

使用道具 举报

7#
发表于 2006-10-22 17:43 | 只看该作者
正常
Q  :
    问题: 怎样获得一个真正的随机数?要知道,rand()是不能产生真正的随机数的!即使不能产生真正的随机数,也要大概接近呀!而rand()好象每次的随机都一样。

A:

     之所以rand()每次的随机数都一样是因为rand()函数使用不正确。各种编程语言返回的随机数(确切地说是伪随机数)实际上都是根据递推公式计算的一组数值,当序列足够长,这组数值近似满足均匀分布。如果计算伪随机序列的初始数值(称为种子)相同,则计算出来的伪随机序列就是完全相同的。这个特性被有的软件利用于加密和解密。加密时,可以用某个种子数生成一个伪随机序列并对数据进行处理;解密时,再利用种子数生成一个伪随机序列并对加密数据进行还原。这样,对于不知道种子数的人要想解密就需要多费些事了。当然,这种完全相同的序列对于你来说是非常糟糕的。要解决这个问题,需要在每次产生随机序列前,先指定不同的种子,这样计算出来的随机序列就不会完全相同了。你可以在调用rand()函数之前调用srand( (unsigned)time( NULL ) ),这样以time函数值(即当前时间)作为种子数,因为两次调用rand函数的时间通常是不同的,这样就可以保证随机性了。你也可以使用srand函数来人为指定种子数。Windows 9x/NT的游戏FreeCell就允许用户指定种子数,这样用户如果一次游戏没有成功,下次还可以以同样的发牌结果再玩一次。

[ 本帖最后由 clawhammer 于 2006-10-22 17:46 编辑 ]
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2006-10-22 21:44 | 只看该作者
原帖由 clawhammer 于 2006-10-22 17:43 发表
正常
Q  :
    问题: 怎样获得一个真正的随机数?要知道,rand()是不能产生真正的随机数的!即使不能产生真正的随机数,也要大概接近呀!而rand()好象每次的随机都一样。

A:

     之所以rand()每次的随 ...



:wacko: 不管程序怎样递归,程序本身不可能产生一个随机的数值,这个随机数应该由某种设备产生的伪随机数。
回复 支持 反对

使用道具 举报

9#
发表于 2006-10-22 22:01 | 只看该作者
原帖由 popwangyuII 于 2006-10-22 21:44 发表



:wacko: 不管程序怎样递归,程序本身不可能产生一个随机的数值,这个随机数应该由某种设备产生的伪随机数。

只听说VIA的C7有专门的硬件随机数发生器.intel和AMD都没有.
不过可能用起来并不容易.
回复 支持 反对

使用道具 举报

10#
发表于 2006-10-22 22:15 | 只看该作者
计算机不可能产生随机........一般都是通过播散一个种子,作为伪随机的发生器,习惯上很多人喜欢用时间作为种子,产生伪随机数

如果能够找到一个产生真正随机的东西,那就是智能生物了,而不是人工智能ing...
回复 支持 反对

使用道具 举报

11#
 楼主| 发表于 2006-10-22 22:19 | 只看该作者
目的构建基于特定Intel芯片组中random number generator(RNG)单元的真随机数生成器.方法在Intel 815E芯片组的个人电脑上安装Intel Security Driver(ISD)后,使用Microsoff Visual C++6编程,通过寄存器读取的方式获取RNG中的随机数.结果生成的500个随机数通过的NIST FIPS 140-1和x2拟合优度检验(α=0.05),表明本方法所生成的随机数满足独立性和分布均匀性的要求.生成7500个随机数经域值变换后与随机数表中的同等数目的随机数进行了统计学比较,结果显示前者的均值偏移、SD,SE和CV均小于后者.结论基于IntelRNG的真随机数生成器可以生成满足独立性和分布均匀性的真随机数,生成的随机数效果与随机数表中的随机数没有显著性区别.但是基于IntelRNG的真随机数生成器能解决使用随机数表获取随机数中可能存在的问题,具有较好的普遍性和实用性.


刚找到的,不知道对不对。AMD有没有?

[ 本帖最后由 popwangyuII 于 2006-10-22 22:22 编辑 ]
回复 支持 反对

使用道具 举报

12#
发表于 2006-10-22 22:48 | 只看该作者
信息论基本的原理就是随机数拥有无穷的信息量,所以计算机不可能产生真正的随机数,而是伪随机。伪随机在计算机和通信领域用的相当普遍。
回复 支持 反对

使用道具 举报

13#
发表于 2006-10-23 13:01 | 只看该作者
只有量子是真随机的
回复 支持 反对

使用道具 举报

RacingPHT 该用户已被删除
14#
发表于 2006-10-23 13:06 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

15#
发表于 2006-10-23 19:07 | 只看该作者
基于电子的东西永远不可能生成随机数,都是伪随机的.不过你的random用法显然有误
回复 支持 反对

使用道具 举报

16#
发表于 2006-10-23 19:12 | 只看该作者
硬件不可能生成随机数吧
回复 支持 反对

使用道具 举报

17#
发表于 2006-10-23 23:52 | 只看该作者
原帖由 含笑半步跌_YSM 于 2006-10-23 19:12 发表
硬件不可能生成随机数吧

用噪声:p
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2025-12-30 18:30

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表