rand()是不能产生真正的随机数的.即使不能产生真正的随机数,也要大概接近.而rand()好象每次的随机都一样.之所以rand()每次的随机数都一样是因为rand()函数使用不正确.
各种编程语言返回的随机数(确切地说是伪随机数)实际上都是根据递推公式计算的一组数值,当序列足够长,这组数值近似满足均匀分布.
扩展资料
调用随机数函数 rand()() 的时候, 实际得到的这个随机数并不是绝对随机的,它是以一个初始值,通过一个算法,计算出来的"伪随机数"数列,每次调用rand()()时,从这个数列依次取出一个值,做为随机数.
这个初始的值就是"随机数种子", 也就是说,如果随机数种子相同,计算出的随机数数列是相同的.而srand()om( x) 这个函数就是初始化随机数产生器,设定随机数种子用的.给定的x的就是随机数种子.可以验证,当你多次调用srandm(x)时,如果x取值相同,则得到的随机数数列是一样的.
所以,若我们每次运行程序时,要得到不同的随机数序列,就应该用不同的种子来初始化这个随机数产生器.比如说,用时间初始化它,或者用getpid(),用进程的pid号初始化,由于每次运行程序时,它的pid号一般是不同的,所以能够产生不同的随机数序列.
s_addr是一个long型的变量,当然可以用random的返回值进行赋值.结构体如下:
typedef struct in_addr {
union {
struct {
} S_un_b;
} S_un_w;
u_long S_addr;////////////////////////////////////////这里
} S_un;
} in_addr;
s_un_b.s_b1=0
s_un_w.s_w1=0;
rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种了,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了 srand()函数,它的原形是void srand( int a).
初始化随机产生器既rand()函数的初始值,即使把种子的值改成a; 从这你可以看到通过sand()函数,我们是可以产生可以预见的随机序列,那我们如何才能产生不可预见的随机序列呢?我们可能常常需要这样的随机序列,是吧.利用srand((unsign)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的.
下面讲一讲在C语言里所提供的随机数发生器的用法.现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数.它们就是rand()和srand()函数.这二个函数的工作过程如下:
以下是一个产生随机数的例子:
需要首先使用随机数"种子"初始化,srand函数:
#i?nclude?stdlib.h
#i?nclude?stdio.h
#i?nclude?time.h//使用当前时钟做种子
void?main(?void?)
{
int?i;
srand(?(unsigned)time(?NULL?)?);//初始化随机数
/*?打印10个随机数.?*/
for(?i?=?0;?i?10;i++?)
printf(?"?%d\n",?rand()?);
}
#include?stdlib.h
#include?time.h
main
srand(time(0));?//初始化随机种子
i?=?rand();?//产生随机数
首先,加一个"#includestdlib.h
添加头文件 #includetime.h
然后在文件中添加 srand((unsigned)time(NULL));
srand()是用来初始化随机种子数的,因为rand的内部实现是用线性同余法做的,它不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的.
上面是有个随机种子的说明及方法,为了避免重复.然后再 用 随机函数,rand() 就行了.
头文件是 stdlib.h
random() 产生随机数为 0或1
random(n) 产生随机数为 0到n之间的一个随机数
函数名: randomize
功 ?能: 初始化随机数发生器
用 ?法: void randomize(void);
程序例:
#include?stdio.h
int?main(void)
randomize();
for(i=0;?i10;?i++)
printf("%d\n",?rand()?%?100);
return?0;
rand函数是根据一个数(我们可以称它为种子)为基准,以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,
但这产生的并不是真意正义上的随机数,是一个伪随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值.
种子相同,产生的随机序列相同.这样做的好处是,方便我们产生一组固定的随机序列,用来调试程序.
C提供了srand()函数,用来设置种子,它的原形是void
srand(
int
a).
在调用rand函数产生随机数前,应该先利用srand()设好随机数种子,如果未设随机数种子,默认种子为1.
C语言里面没有random函数
只有rand
功能是产生一个整型随机数.
比如
n=rand();
这样就可以了
为了真随机,一般在开始设置一个种子 一次即可. 常用方式为
srand(time(NULL));
random,C语言里意为随机数发生器.用法:
int random(int num);
例子:
#include stdlib.h
int main(void);
return 0;
以上就是土嘎嘎小编为大家整理的c语言中random函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!