随机函数的可靠性 谁知道随机函数是怎么样实现的 他的随机性可靠吗(完全随机 就像投硬币一样 复合概率)还是随机函数实际上也是控制了的 也就随机函数运行的时候 有东西主观干涉着我着用随机函数作为核心使用 但要非常可靠的 随机取值才行 所以想了解一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我觉得不太可靠:for(50次){srand((unsigned int)time(NULL)%rand());//以前没有这一行,每次运行得到的50个值都是一样的 //所以后来加上这一句让它每次随机的起点也随机(与time()有关)r=rand()%50;...} http://dev.csdn.net/article/22/22684.shtm找了一篇文章,不知道对你有没有帮助 利用硬件随机数发生器,可以得到很高熵的随机数。例如物理放射性衰变计数随机数产生器。还有很多商用的专用硬件随机数产生器,可以用在高安全性能要求的地方。 但是我们更多的是使用软件随机数产生器,主要是考虑到成本和方便。很多时候,我们都使用简单的时间来做种子产生随机数。 我们来看一下PGP软件,PGP每次加密的实际密匙是个随机数。PGP程序对随机数的产生是很审慎的,关键的随机数像RSA密匙的产生是从用户敲键盘的时间间隔上取得随机数种子的。利用敲击键盘的时间间隔可以产生一种熵比较高的随机数。但是如果是利用特定的时间间隔等待键盘动作,就不能得到很高熵的随机数。此外利用鼠标事件采用也可以得到比较随机的“随机数”。当然如果鼠标不动,或者按着键盘不动,那么就比较危险。 此外还有利用多线程执行,记录当前网络流量,记录搜索磁盘所花费的时间等方法。在需要高安全的随机数时,一定要慎重考虑。 Windows 的密码API提供了一个CryptGenRandom调用。 在Linux中,有一个设备/dev/random它可以产生相当于处理熵的数值。/dev/urandom应用得也很好,输出伪随机数,速度非常快,现代得BSD的x86操作系统已经开始提供这样的设备。 在C里头的rand 与random好像也太不随机了有个时候简单就是在一定范围内在学C的时候,不是有个猜硬币的小游戏编程吗? CAsyncSocket OnAccept没有被触发 如何改变另一个程序statusbar里的文字?(另一个程序并非我自己的) 背景图片闪烁问题 有关模式对话框移动位置的问题 WebBrowse用来分析html的com是什么? 关于多文档的问题! 如何用VC取得下列操作界面 (续) 请问:声音数据是怎样被读出并转换为声音的? ADO的try-catch总是得到“未指定的错误” 在Tree中要得到一个元素的Image信息,该如何实现 大虾帮忙啊,急啊 长到四个角+五一过节(散200)
for(50次)
{
srand((unsigned int)time(NULL)%rand());//以前没有这一行,每次运行得到的50个值都是一样的
//所以后来加上这一句让它每次随机的起点也随机(与time()有关)
r=rand()%50;
...
}
产生器。还有很多商用的专用硬件随机数产生器,可以用在高安全性能要求的地方。
但是我们更多的是使用软件随机数产生器,主要是考虑到成本和方便。很多时候,我
们都使用简单的时间来做种子产生随机数。 我们来看一下PGP软件,PGP每次加密的实际密匙是个随机数。PGP程序对随机数的产生是很审慎的,关键的随机数像RSA密匙的产生是从用户敲键盘的时间间隔上取得随机数种子的。利用敲击键盘的时间间隔可以产生一种熵比较高的随机数。但是如果是利
用特定的时间间隔等待键盘动作,就不能得到很高熵的随机数。此外利用鼠标事件采用
也可以得到比较随机的“随机数”。当然如果鼠标不动,或者按着键盘不动,那么就比
较危险。 此外还有利用多线程执行,记录当前网络流量,记录搜索磁盘所花费的时间等方
法。在需要高安全的随机数时,一定要慎重考虑。
Windows 的密码API提供了一个CryptGenRandom调用。
在Linux中,有一个设备/dev/random它可以产生相当于处理熵的数
值。/dev/urandom应用得也很好,输出伪随机数,速度非常快,现代得BSD的x86操
作系统已经开始提供这样的设备。