首页 > 编程知识 正文

随机数srand,c语言中随机函数的用法

时间:2023-05-03 22:41:45 阅读:135305 作者:2170

在实际编程中,需要生成随机数。 例如,在吃蛇游戏中,食物出现在随机位置,扑克牌游戏中随机出牌。

在c语言中,通常使用stdlib.h头文件中的rand ) )函数生成随机数,其用法如下:

输入(void );

void表示不需要传递参数。

c语言也有可获取随机数的random (函数,但random )不是标准函数,VC/VS等编译器无法通过,所以很少使用。

rand ) )随机生成0到rand _ max之间的整数。

RAND_MAX是stdlib.h头文件中的宏,表示rand () )可以返回的最大随机数。 C语言标准没有规定RAND_MAX的具体数值,但至少规定了32767的值。 在实际编程中,不需要知道RAND_MAX的具体值,可以当作大的数来处理。

随机数生成的例子如下所示。

#include stdio.h

#include stdlib.h

int main ()。

int a=rand (;

printf(%d(n ),a );

返回0;

}

执行结果:

193

随机数的本质

如果多次运行上面的代码,您会发现每次出现的随机数都是相同的。 这是怎么回事呢? 为什么随机数不是随机的呢?

实际上,rand ()函数中出现的随机数是伪随机数,是根据某个数值或某个公式估计的。 这个数值称为“种子”。 种子和随机数的关系是正态分布。

每次启动计算机时种子都是随机的,但计算机启动后种子不再变化,这意味着每次启动计算机时种子都是固定值。 因此,根据表达式估计的结果(即生成的随机数)是固定的。

重新播种

我们可以用srand ()函数重新“播种”。 那样的话,物种就会改变。 srand ) )的使用方法如下。

voidsrand(unsignedintseed );

需要unsigned int型的参数。 在实际开发中,时间可以作为参数。 如果每次播种的时间不同,生成的物种不同,最终的随机数也不同。

time.h头文件中的time ) )函数可以获取当前时间(以秒为单位),如下所示:

srand () unsigned (time ) ) null );

修改以上代码,在生成随机数之前进行种子。

#include stdio.h

#include stdlib.h

#include time.h

int main ()。

int a;

srand () unsigned (time ) ) null );

a=rand (;

printf(%d(n ),a );

返回0;

}

如果多次运行程序,您会发现每次生成的随机数都不一样。 但是,这些随机数有逐渐增大或减少的趋势。 这是因为我们以时间为种子,时间会逐渐增大,结合上面的正态分布图,很容易推测随机数也会逐渐增大或减少。

如果你在学习C/C时遇到问题,可以加入编辑的企鹅圈去问编辑哦。 编辑很亲切。 ’’)

生成一定范围内的随机数

在实际开发中,往往需要一定范围的随机数,过大或过小都不符合要求。 那么,如何生成一定范围的随机数呢? 我们可以利用取模的方法:

inta=rand( (; 产生//0~9的随机数,注意10能被整除

规定上下限时:

inta=rand(Q13; 产生13~63的随机数

分析:取模就取余。 rand(q13可以认为是两个部分。 rand ) q产生0到50之间的随机数。 后13保证a最小只有13,最大50 ) 13=63。

最后给出产生13~63范围内随机数的完整代码:

#include stdio.h

#include stdlib.h

#include time.h

int main ()。

int a;

srand () unsigned (time ) ) null );

a=rand(Q13;

printf(%d(n ),a );

返回0;

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。