优质c语言rand函数的用法范文模板 14页Word文档下载推荐.docx
- 文档编号:18389670
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:11
- 大小:18.68KB
优质c语言rand函数的用法范文模板 14页Word文档下载推荐.docx
《优质c语言rand函数的用法范文模板 14页Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《优质c语言rand函数的用法范文模板 14页Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
*/
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);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 优质c语言rand函数的用法范文模板 14页 优质 语言 rand 函数 用法 范文 模板 14