rand函数c语言原型,c语言的rand

srand 和rand函数原型?

1.rand 随机函数发生器

成都创新互联基于分布式IDC数据中心构建的平台为众多户提供遂宁联通机房 四川大带宽租用 成都机柜租用 成都服务器租用。

用法:int rand(void);

用法?:void srand(unsigned seed);

说明:rand使随机数发生器产生一范围从0~2的随机数。发生器通过调用参数值为1的srand函数可重初始化,也可用给定的函数值。

seed调用srand产生一新的起点。

可移植性:UNIX系统适用

源程序:

#includestdlib.h

#define MULTIPLIER 0x015a4e35L

#define INCREMENT 1

static long Seed = 1;

int rand(void)

{

Seed = MULTIPLIER*Seed + INCREMENT;

return ((int)(Seed16) 0x7fff);

}

2.srand 初始化随机数发生器

用法:void srand(unsigned seed);

源程序:

#includestdlib.h

#define MULTIPLIER 0x015a4e35L

#define INCREMENT 1

static long Seed = 1;

void srand(unsigned seed)

{

Seed = seed;

}

摘自TC库函数源程序一书。

自己实现一个产生随机数的函数见高手这里:

关于C语言中的随机函数rand()的源代码~~到底怎么求出随机数的!!

return一句的功能只是把得数的绝对值控制在0~32767之间,关键是next

=

next

*

1103515245

+

12345一句。next变量是静态的,变化以后的值是不消失的,下一次还可用,所以每执行一次next

=

next

*

1103515245

+

12345就获得一个新值,这个新值被return取整除、取余除后控制在0~32767之间就形成了0~32767的随机数。比如第一次,next=1*1103515245

+

12345=1103527590,经return中的对65536取整、对32768取余后就是16838;若再来一次,next已经是1103527590了,那么next

=

next

*

1103515245

+

12345就为next

=

1103527590

*

1103515245

+

12345=1217759518843121895;但这个数已经溢出了,实际上表示成了-1770082073,经return中取整取余后返回的就是-27009;可以算出来,再下一次是10113……不过,你这个函数并不能产生真正意义上的“随机”数,因为作为基数的1103515245在每次开始时是不变的,所以只能得出同样的序列,即每次执行都产生16838、-27009、10113……这样一组无限多的数。所以实际的C随机函数rand()的形参并不是void而是一个长整型变量,通常来调用实时时间函数获取实时时间值来得到,因为时间是每时每刻都在变化的,所以充当"1103515245”角色的数就每调用一次的值都不同。这样每次执行就都能得到不重复的序列。至于12345,我想随便取个数都行!仅供参考……

c语言 n=rand()%5是什么意思

rand()函数会产生范围为0至32767的随机数,% 让它与5求余,变成0至4的随机数,不过每次启动程序产生的随机数都相等,在用srand(unsigned int)输入种子数后产生的才不一样,一般都用的 srand((unsigned int)time(NULL)) 产生种子。(记得要包含 time.h 库文件)

扩展资料:

当提供的种子相同时,随机数序列也是相同的。而且当种子为1时,与不使用srand()函数时一样的,也就是说rand()函数默认情况下初始化种子值为1;

在stdlib.h 中这两个函数的原型是:

int rand();

void srand (unsigned int);

srand(time(0)); i=rand();

或者srand(time(NULL));

这样就是一个伪随机数。

rand()产生伪随机数,srand函数提供种子,种子不同产生的随机数序列也不同,所以通常先调用srand函数 time()返回的是系统的时间(从1970.1.1午夜算起),单位:秒,种子不同当然产生的随机数相同几率就很小了。

参考链接:

rand()-百度百科

c语言中rand()函数怎么用?

#include stdio.h

#include stdlib.h

int main()

{

unsigned int seed; /*申明初始化器的种子,注意是usigned int 型的*/

int k;

printf("Enter a positive integer seed value: \n");

scanf("%u",seed);

srand(seed);

printf("Random Numbers are:\n");

for(k = 1; k = 10; k++)

{

printf("%i",rand());

printf("\n");

}

return 0;

}

当提供的种子相同时,随机数序列也是相同的。而且当种子为1时,与不使用srand()函数时一样的,也就是说rand()函数默认情况下初始化种子值为1;

在stdlib.h 中这两个函数的原型是:

int rand();

void srand (unsigned int);

srand(time(0)); i=rand(); 这样i就是一个真正意义上的随机数。

rand()产生伪随机数,srand函数提供种子,种子不同产生的随机数序列也不同,所以通常先调用srand函数 time(0)返回的是系统的时间(从1970.1.1午夜算起),单位:秒,种子不同当然产生的随机数相同几率就很小了.

c语言随机数函数是什么?

C语言随机函数主要用于实现一组随机数的生成。

代码示例如下:

#includestdio.h

#includestdlib.h

int main ()

{

int a;

a=rand()%4;

printf("%d\n",a);

return 0;

}

C预先生成一组随机数,每次调用随机函数时从指针所指向的位置开始取值,因此使用rand()重复运行程序产生的随机数都是相同的,可以通过srand()函数来改变指针位置。

扩展资料:

C语言随机函数指针位置

void srand( unsigned int seed )

改变随机数表的指针位置(用seed变量控制)。一般配合time(NULL)使用,因为时间每时每刻都在改变,产生的seed值都不同。

基于毫秒级随机数产生方法:

#includewindows.h

种子设为:srand(unsigned int seed);

srand(GetTickCount());

参考资料:百度百科-C语言随机函数


网页名称:rand函数c语言原型,c语言的rand
文章网址:http://scyanting.com/article/hcjdis.html