我是靠谱客的博主 专一自行车,最近开发中收集的这篇文章主要介绍c语言随机数第一个都是-2,C语言中产生随机数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

C语言中产生随机数

C语言中是怎样产生随机数的呢?这就要用到rand()函数和srand()函数啦!那接下来就分几种情况看看在C语言中到底是怎么产生随机数的。

1、如果你只是要产生随机数,而不需要设定随机数的范围的话,这里你之需要用rand()函数就行啦!

举例:

#include

#include

int main()

{

int i = 0;

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

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

return 0;

}

结果:

0818b9ca8b590ca3270a3433284dd417.png

在这里,你也会有两个疑问:(1)、为什么我设定范围,产生的随机数就这么大?

(2)、产生的不是随机数吗,为什么运行两次产生的随机数都是相同的呢?

第一个问题呢,这就要问stdlib.h啦!因为当调用rand()函数时,rand()会返回一个随机数值,而这个随机数的数值的范围实在0~RAND_MAX之间,但是RAND_MAX定义在stdlib.h中,且其值为2147483647。所以才导致产生随机数的值才那么大呀!

0818b9ca8b590ca3270a3433284dd417.png

第二个问题呢,接下来才会讲,这里先透露一下,是因为随机数种子(seed)没有设置的原因呀!

2、如果你需要产生一个在一定范围内的随机数,你可以在函数中定义一个random(int  number)函数,然后在main()函数里面直接调用random()函数就可以啦(当然random()函数的函数名是随便定义的啦,也可以取别的函数名,不过要便于阅读哟~)

举例:

#include

#include

#define random(x) (rand()%x)

int main()

{

int i = 0;

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

printf("%dn",random(16));

return 0;

}

结果:

0818b9ca8b590ca3270a3433284dd417.png

很神奇吧!那它为什么就能把范围限定在0~15呢?这就得问问“#define  random()    (rand()%x)”啦,random()函数表示的意思是,把rand()产生的随机数对x取余数,这样就使得产生的随机数设置在0~x的范围内。

3、现在就来讨论1中的第二个问题啦,每次运行产生的随机数都是一样的,那样的话产生随机数的意义不就是不复存在啦吗?这就与srand()函数有关啦,srand()函数是用来设置rand()产生随机数时的随机数种子的;如果在调用rand()函数产生随机数之前,使用srand()设置一下随机数种子,那每次产生的随机数就不一样啦!由于上面两个例子中都没哟设置随机数种子,而rand()在调用时会自动的把随机数种子设置为1,从而导致rand()所产生的随机数值都是一样的呀!

在这里,你就会问:那我怎么设置随机数种子呢?一般,都是用当前的时间作为随机数种子,这样就能保证每次运行时都能取到不同的随机数序列。如:time_t    t ;srand( (int) time(&t));

举例:

#include

#include

#include

#define random(x) (rand()%x)

int main()

{

int i = 0;

srand((int)time(NULL));

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

printf("%dn",random(16));

return 0;

}

结果:

0818b9ca8b590ca3270a3433284dd417.png

最后

以上就是专一自行车为你收集整理的c语言随机数第一个都是-2,C语言中产生随机数的全部内容,希望文章能够帮你解决c语言随机数第一个都是-2,C语言中产生随机数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部