先使用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语言都可以实现。至于需要多少随机性,是否实用,就不是设计者能够完全决定的了。
====
[原创回答团]