我怎样才能产生真正的(不是伪)随机数用C

如题所述

    随机数是专门的随机试验的结果。

    在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡罗模拟法计算的时候等等。

    产生随机数有多种不同的方法。这些方法被称为随机数生成器。随机数最重要的特性是它在产生时后面的那个数与前面的那个数毫无关系。

    真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等,这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。

    使用计算机产生真随机数的方法是获取cpu频率与温度的不确定性以及统计一段时间的运算次数每次都会产生不同的值,系统时间的误差以及声卡的底噪等。

    在实际应用中往往使用伪随机数就足够了。这些数列是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的。计算机或计算器产生的随机数有很长的周期性。它们不真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征。这样的发生器叫做伪随机数发生器。

    在真正关键性的应用中,比如在密码学中,人们一般使用真正的随机数。

    比如,在C语言中,可以加入系统时间来获取相对不那么"稳定"的随机数.代码如下:

    #include<stdio.h>  
    #include<time.h>   
    int main()  
    {  
        
        int m,n;      
        srand(time(NULL));//产生时间种子
        m=rand()%100+1;//生成100以内随机数  
        n=rand()%100+1;    
        printf("m=%d,n=%d\n",m,n);

    }

    结论:在一般条件下,要获取大量的真随机数,兄台,有点难呀.

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-21
几乎不可能