谁知道随机函数是怎么样实现的 他的随机性可靠吗(完全随机 就像投硬币一样 复合概率)还是随机函数实际上也是控制了的  也就随机函数运行的时候 有东西主观干涉着
我着用随机函数作为核心使用 但要非常可靠的 随机取值才行 所以想了解一下

解决方案 »

  1.   

    我觉得不太可靠:
    for(50次)
    {
    srand((unsigned int)time(NULL)%rand());//以前没有这一行,每次运行得到的50个值都是一样的
                                           //所以后来加上这一句让它每次随机的起点也随机(与time()有关)
    r=rand()%50;
    ...
    }
      

  2.   

    http://dev.csdn.net/article/22/22684.shtm找了一篇文章,不知道对你有没有帮助
      

  3.   

    利用硬件随机数发生器,可以得到很高熵的随机数。例如物理放射性衰变计数随机数
    产生器。还有很多商用的专用硬件随机数产生器,可以用在高安全性能要求的地方。
      但是我们更多的是使用软件随机数产生器,主要是考虑到成本和方便。很多时候,我
    们都使用简单的时间来做种子产生随机数。 我们来看一下PGP软件,PGP每次加密的实际密匙是个随机数。PGP程序对随机数的产生是很审慎的,关键的随机数像RSA密匙的产生是从用户敲键盘的时间间隔上取得随机数种子的。利用敲击键盘的时间间隔可以产生一种熵比较高的随机数。但是如果是利
    用特定的时间间隔等待键盘动作,就不能得到很高熵的随机数。此外利用鼠标事件采用
    也可以得到比较随机的“随机数”。当然如果鼠标不动,或者按着键盘不动,那么就比
    较危险。  此外还有利用多线程执行,记录当前网络流量,记录搜索磁盘所花费的时间等方
    法。在需要高安全的随机数时,一定要慎重考虑。
      Windows 的密码API提供了一个CryptGenRandom调用。
      在Linux中,有一个设备/dev/random它可以产生相当于处理熵的数
    值。/dev/urandom应用得也很好,输出伪随机数,速度非常快,现代得BSD的x86操
    作系统已经开始提供这样的设备。
      

  4.   

    在C里头的rand 与random好像也太不随机了有个时候简单就是在一定范围内在学C的时候,不是有个猜硬币的小游戏编程吗?