详细介绍一下C语言里面的随机数产生函数random怎么用

 我来答
duguodong189
2013-11-24 · TA获得超过1069个赞
知道小有建树答主
回答量:1055
采纳率:33%
帮助的人:431万
展开全部

 rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种了,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了 srand()函数,它的原形是void srand( int a).

  初始化随机产生器既rand()函数的初始值,即使把种子的值改成a; 从这你可以看到通过sand()函数,我们是可以产生可以预见的随机序列,那我们如何才能产生不可预见的随机序列呢?我们可能常常需要这样的随机序列,是吧。利用srand((unsign)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的.

  下面讲一讲在C语言里所提供的随机数发生器的用法。现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。这二个函数的工作过程如下:

1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;

2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)

3) 根据需要多次调用rand(),从而不间断地得到新的随机数;

4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。

以下是一个产生随机数的例子:

需要首先使用随机数“种子”初始化,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
{
int i;
srand(time(0)); //初始化随机种子
i = rand(); //产生随机数
}

 

 

首先,加一个"#include<stdlib.h>

然后设一个变量,如j,j=rand(),就可以给j赋一个1~32767的随机数,如果要获得一个随机函数的十位(其它类似),只需令j=j%10就行.

 

 

 

添加头文件 #include<time.h>

然后在文件中添加 srand((unsigned)time(NULL));

srand()是用来初始化随机种子数的,因为rand的内部实现是用线性同余法做的,它不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的.

上面是有个随机种子的说明及方法,为了避免重复.然后再 用 随机函数,rand() 就行了.

头文件是 stdlib.h

 

 

random() 产生随机数为 0或1

random(n) 产生随机数为 0到n之间的一个随机数 

rand() 产生 0到32768之间的一个随机数

 

 

 

函数名: randomize

功  能: 初始化随机数发生器

用  法: void randomize(void);

程序例:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(void)
{
   int i;
   randomize();
   printf("Ten random numbers from 0 to 99\n\n");
   for(i=0; i<10; i++)
       printf("%d\n", rand() % 100);
   return 0;
}
手机用户03824
2013-11-24 · 超过12用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:34.5万
展开全部
你可以用一个数组接受它的值
for(int i= 0; i< 10; i++){
array[i] = random(time(0));
}
这样就给array数组赋值了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
java紧挨va
2013-11-24 · TA获得超过880个赞
知道小有建树答主
回答量:690
采纳率:50%
帮助的人:326万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
srand((unsigned)time(NULL));

int i = rand()%100;
printf("%d\n", i);

return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式