1. > 生活百科 >

c语言rand(c语言rand函数范围)

c语言之rand函数的使用

c语言中的rand随机数函数,是按指定顺序来产生的,在生成随机数之前,在stdlib.h头文件中,会初始化函数srand,根据随机种子seed,来获取随机数,如果seed不变,每次运行得到的随机数会是一样的,因此,rand函数也被大家叫做伪随机数。下面就来介绍下rand函数的使用

01

打开代码编译器,输入如下所示的代码片段

02

运行该代码片段,得到10个随机数,但是我们发现,不论运行几次,生成的随机数都是这10个,也就是说,在种子seed不变的情况下,生成的随机数是伪随机数

03

我们引入头文件time.h,取时间戳作为seed的取值来源,改代码片段如下,将srand(1)改成srand(time(NULL))

04

运行代码,得到10个随机数如下,定义非常量的srand参数,可以避免伪随机数的产生

随机函数rand怎么用c语言

一、首先包含必要的头文件

#include

这个包含用于输入输出的函数。

#include

这个包含初始化随机数种子、产生随机数的函数。

#include

这个包含与时间有关的函数,初始化随机数种子时可以用到。

二、使用如下公式产生在区间[min,max]之间的随机数

int r=rand()%(max-min+1)+min;

三、一个例子,产生10个[1,100]的随机整数

#include

#include

#include

int main()

{

const int min=1,max=100;

int i,r;

//用当前时间初始化随机数种子

srand(time(NULL));

printf("随机产生的10个1-100的整数是:");

for(i=0;i<10;i++)

{

r=rand()%(max-min+1)+min;

printf("%d,",r);

}

return 0;

}

四、运行结果的截图

c语言rand(c语言rand函数范围)c语言rand(c语言rand函数范围)


截图1

截图2

c语言rand

rand()%90+10:随机产生一个两位数[10,100).

rand()是产生随机数的函数(rand为random的缩写),它产生一个[0,32767)之间一个随机数.

rand()常与srand()一起使用.

srand()是seed_random的缩写,seed意思是随机数种子.如果程序中未使用srand()函数.C系统默认为srand(0).如果有以下语句:

for(i=0;i<5;i++)

for(j=0;j<4;j++)

a[i][j]=rand()%90+10;

则从a[0][0]到a[5][4]的值都相同.

因此要在for(i=0;i<5;i++)之前加上如下语句:

srand ( (unsigned) time (NULL) );

srand()的形参要求是unsigned型,而time()的返回值是长整型,故需强制转换.而time(NULL)返回从1970年0时0分0秒到srand()语句执行时系统时钟所经历的秒数(这个数字很大达千万,故为长整型).

如果你需要20个60到100的随机数.则可用如下语句实现:

#inlude

main()

{int a[20},i;

srand ( (unsigned) time (NULL) );

for(i=0;i<20;i++)

{a[i]=rand()%40+60;/*100-60=40*/

printf("%4d",a[i]);

}

}

c语言rand(c语言rand函数范围)c语言rand(c语言rand函数范围)


其实从概律论来分析,用这两个函数产生的随机数并不随机,它们并不符合正态分数.

C中,rand()是什么意思,有什么作用

rand()是C语言中产生随机数的一个函数,但是需要注意的是,产生的是伪随机数。

rand()用法举例:

产生1到100之间的随机数

#include

int main(){

srand((unsigned)time(NULL));//产生随机数种子

int rand_num=(rand()%100)+1;//产生1到100直接的随机数

printf("rand_num=%d\n",rand_num);

return 0;

}

c语言rand(c语言rand函数范围)c语言rand(c语言rand函数范围)


代码截图:

扩展资料:

所谓的“伪随机数”指的并不是假的随机数。其实绝对的随机数只是一种理想状态的随机数,计算机只能生成相对的随机数即伪随机数。

系统在调用rand()之前都会自动调用srand(),如果用户在rand()之前曾调用过srand()给参数seed指定了一个值,那么 rand()就会将seed的值作为产生伪随机数的初始值;

而如果用户在rand()前没有调用过srand(),那么系统默认将1作为伪随机数的初始 值。如果给了一个定值,那么每次rand()产生的随机数序列都是一样的。

所以为了避免上述情况的发生我们通常用srand((unsigned)time(0))或者srand((unsigned)time(NULL))来 产生种子。

如果仍然觉得时间间隔太小,可以在(unsigned)time(0)或者(unsigned)time(NULL)后面乘上某个合适的整数。 例如,srand((unsigned)time(NULL)*10)。

参考资料:百度百科-rand函数

C语言rand函数产生的最大随机数是多少?

最大32767 (2^16-1)。\x0d\x0a系统里的随机数是利用初等数论中的同余定理来实现的.\x0d\x0a整数rand的原理是: \x0d\x0a y=ax+b(mod n)其中,n一般是一个很大的素数,几万。 \x0d\x0a a也是大素数。而且a,b,n都是常数。所以rand的产生决定于x, \x0d\x0a 他被称为seed。 \x0d\x0a 每一个seed都是上一次产生的y的函数。这样,如果直接取seed=y的话, \x0d\x0a 虽然产生的rand之间相关性甚小,但只要知道某个y,就能推知以后的rand。 \x0d\x0a 为避免这种情况,一般取seed为y和当时计算机的时间的函数,如seed=y+t\x0d\x0a\x0d\x0a比如VC中对于rand()函数是如下实现的. \x0d\x0a int __cdecl rand (void) \x0d\x0a { \x0d\x0a return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff); \x0d\x0a }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, website.service08@gmail.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息