如何用C语言生成真正的随机数

Python017

如何用C语言生成真正的随机数,第1张

先使用srand函数以当前时间做一个种子,然后再随机

如:

#include <time.h> //用到了time函数

#include <stdlib.h>

#include <stdio.h>

  

int main()

{

    int i, number

    srand((unsigned int) time(NULL)) //用时间做种,每次产生随机数不一样

    for (i=0 i<10 i++)//产生10个随机数

    {

        number = rand() % 12 + 1//产生1-13的随机数

        printf("%d\n", number)

    }

    return 0

}

一般就是采用设置种子的方式 实现真随机

种子往往是由当前时间

比如

srand(time(NULL))

计算机语言中,很难做到真正的随机。

这是数学问题了。

可以理解的是,计算机作为通用图灵机,只能储存有限个状态,在稳定运行的情况下,对于确定的输入,输出是确定的,无法实现“真正”的随机性

但是,日常情况下,需要随机数时,可以用计算机实现。理由是计算机储存的状态是一个不确定的大的整数,利用某种伪随机数算法可以使输入和输出的关联性被隐藏。这时候,尽管随机数不是“真正”的,但是对于使用者来说,和“真正”的随机数看上去并没有什么区别。

C语言库函数提供伪随机数算法封装的库函数srand()/rand(),随机性并不强。只要能自己表达出硬件无关(例如要求用量子计算机实现的就不算)的随机性足够强的算法,C语言都可以实现。至于需要多少随机性,是否实用,就不是设计者能够完全决定的了。

====

[原创回答团]