优质c语言rand函数的用法范文模板 14页Word文档下载推荐.docx

上传人:b****6 文档编号:18389670 上传时间:2022-12-15 格式:DOCX 页数:11 大小:18.68KB
下载 相关 举报
优质c语言rand函数的用法范文模板 14页Word文档下载推荐.docx_第1页
第1页 / 共11页
优质c语言rand函数的用法范文模板 14页Word文档下载推荐.docx_第2页
第2页 / 共11页
优质c语言rand函数的用法范文模板 14页Word文档下载推荐.docx_第3页
第3页 / 共11页
优质c语言rand函数的用法范文模板 14页Word文档下载推荐.docx_第4页
第4页 / 共11页
优质c语言rand函数的用法范文模板 14页Word文档下载推荐.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

优质c语言rand函数的用法范文模板 14页Word文档下载推荐.docx

《优质c语言rand函数的用法范文模板 14页Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《优质c语言rand函数的用法范文模板 14页Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。

优质c语言rand函数的用法范文模板 14页Word文档下载推荐.docx

*/

longquotient,remainder,t;

quotient=*value/127773L;

remainder=*value%127773L;

t=16807L*remainder-2836L*quotient;

if(t<

=0)

t=0x7FFFFFFFL;

return((*value=t)%((unsignedlong)RANDOM_MAX1));

}

staticunsignedlongnext=1;

intmy_rand(void)

returnmy_do_rand(&

next);

}

voidmy_srand(unsignedintseed)

next=seed;

#include<

time.h>

intmain()

inti;

my_srand((unsigned)(time(NULL)));

for(i=0;

i<

100;

i)

if(i%10==0)

printf("

\n"

);

%d\t"

my_rand()%991);

system("

pause"

return0;

篇二:

C语言中srand(),rand(),time()函数

srand函数

srand函数是随机数发生器的初始化函数。

原型:

voidsrand(unsignedseed);

用法:

它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子,后面的rand()函数会出现一样的随机数。

如:

srand

(1);

直接使用1来初始化种子。

不过为了防止随机数每次重复常常使用系统时间来初始化,即使用time函数来获得系统时间,它的返回值为从00:

00:

00GMT,January1,1970到现在所持续的秒数(即从1970年1月1日的00:

00到当前你所处的时间所经过的秒数),然后将time_t型数据转化为(unsigned)型再传给srand函数,即:

srand((unsigned)time(&

t));

还有一个经常用法,不需要定义time_t型t变量,即:

srand((unsigned)time(NULL));

直接传入一个空指针,因为你的程序中往往并不需要经过参数获得的t数据。

srand((int)getpid());

使用程序的ID(getpid())来作为初始化种子,在同一个程序中这个种子是固定的。

例1(C语言)

随机输出十个0-100之间的整数

程序例1:

stdlib.h>

/*用到了srand函数,所以要有这个头文件*/

stdio.h>

/*用到了time函数,所以要有这个头文件*/

#defineMAX10

intmain(void)

intnumber[MAX]={0};

unsignedintseed;

scanf("

%d"

&

seed);

/*手动输入种子*/

srand(seed);

for(i=0;

i<

MAX;

i++)

number[i]=rand()%100;

/*产生100以内的随机整数*/

%d"

number[i]);

例2(C语言)

程序例2:

inti;

srand((unsigned)time(NULL));

/*播种子*/for(i=0;

例3(C++)

iostream>

ctime>

cstdlib>

usingnamespacestd;

doublerandom(double,double);

doublerandom(doublestart,doubleend)

returnstart+(end-start)*rand()/(RAND_MAX+1.0);

在VC++6.0中输出的结果是:

srand(unsigned(time(0)));

for(inticnt=0;

icnt!

=10;

++icnt){cout<

<

"

No."

<

icnt+1<

:

int(random(0,10))<

endl;

}return0;

==========================================

No.1:

6

No.2:

3

No.3:

8

No.4:

7

No.5:

0

No.6:

No.7:

4

No.8:

No.9:

No.10:

9

rand函数

简介

功能:

伪随机数发生器

所属库:

stdlib.h

用法:

需要先调用srand初始化,一般用当前日历时间初始化随机数种子,这样每

行代码都可以产生不同的随机数。

函数原型:

intrand(void);

相关函数:

srand、time、GetTickCount

程序例

程序1:

#include"

stdio.h"

stdlib.h"

intmain(void)

Tenrandomnumbersfrom0to99\n\n"

for(i=0;

i<

10;

%d\n"

rand()%100);

例1程序在每次运行时都会生成相同的十个伪随机数,

如要每次生成的随机数不同应结合srand函数和time函数。

如下:

程序例2:

time.h"

srand((unsignedint)time(NULL));

解释:

其中rand()%100中的“100”是可变量,也就是随机产生时的最大值(100-1=99)。

产生随机数的范围是[0,100),如果不采用srand((unsignedint)time(NULL));

程序会默认调用srand

(1)。

伪整型随机数[a,b)

如果要取得[a,b)之间的数,则num=rand()%(b-a)+a;

伪浮点随机数[a,b)

fnum=rand()/(double)(RAND_MAX/(b-a))+a;

注:

a,b均为整数,a!

=b,且a>

=0;

time函数

函数名:

time

头文件:

time.h

time_ttime(time_t*timer)

功能:

获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(CoordinatedUniversalTime)时间1970年1月1日00:

00(称为UNIX系统的Epoch时间)到当前时刻的秒数。

然后调用localtime将time_t所表示的CUT时间转换为本地时间(我们是+8区,比CUT多8个小时)并转成structtm类型,该类型的各数据成员分别表示年月日时分秒。

补充说明:

time函数的原型也可以理解为longtime(long*tloc),即返回一个long型整数。

因为在time.h这个头文件中time_t实际上就是:

#ifndef_TIME_T_DEFINED

typedeflongtime_t;

/*timevalue*/

#define_TIME_T_DEFINED/*avoidmultipledefinesoftime_t*/#endif

即long。

函数应用举例

time函数获得日历时间。

日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。

这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,

这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是“相对时间”,但是无论你在哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。

程序例1:

dos.h>

time_tt;

t=time(NULL);

printf("

ThenumberofsecondssinceJanuary1,1970is%ld"

t);

return0;

//time函数也常用于随机数的生成,用日历时间作为种子。

#include<

tenrandomnumbersfrom0to99\n\n"

for(i=0;

rand()%100);

程序例3:

用time()函数结合其他函数(如:

localtime、gmtime、asctime、ctime)可以获得当前系统时间或是标准时间。

stddef.h>

time_ttimer;

//time_t就是longint类型

structtm*tblock;

timer=time(NULL);

//这一句也可以改成time(&

timer);

tblock=localtime(&

篇三:

用c语言产生随机数rand()

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

可能大家都知道C语言中的随机函数random,可是random函数并不是ANSIC标准,所以说,random函数不能在gcc,vc等编译器下编译通过。

rand()会返回一随机数值,范围在0至RAND_MAX间。

返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,(其值至少为32767)我运算的结果是一个不定的数,要看你定义的变量类型,int整形的话就是32767。

在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。

一般用for语句来设置种子的个数。

具体见下面的例子。

一如何产生不可预见的随机序列呢

利用srand((unsignedint)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的。

在C语言里所提供的随机数发生器的用法:

现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。

它们就是rand()和srand()函数。

这二个函数的工作过程如下:

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

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

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

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

下面是0~32767之间的随机数程序:

//使用当前时钟做种子

voidmain(void)

{inti;

srand((unsigned)time(NULL));

//初始化随机数

for(i=0;

10;

i++)//打印出10个随机数

printf("

%d\n"

rand());

根据上面的程序可以很容易得到0~1之间的随机数:

#include<

main()

i++)

%5.2f\n"

rand()/32767.0);

而产生1~100之间的随机数可以这样写:

rand()%100+1);

二,三个通用的随机数发生器,推荐用第三个

函数名:

rand

随机数发生器

voidrand(void);

程序例:

random

intrandom(intnum);

/*printsarandomnumberintherange0to99*/intmain(void)

randomize();

Randomnumberinthe0-99range:

random(100));

randomize这个比较好!

初始化随机数发生器

voidrandomize(void);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1