【C语言】rand()函数(如何生成指定范围随机数)

简介: 【C语言】rand()函数(如何生成指定范围随机数)

一.rand()函数简介

我们先来看一下cplusplus.com - The C++ Resources Network网站上rand函数的基本信息:

系统生成随机数时需要使用rand函数(rand()会返回一个范围在0到RAND_MAX(32767)之间的伪随机数(整数)。

由此可知,可以将rand函数理解为一个非常长的伪随机数组,而我们可以通过给rand函数传参来达到从不同的入口进入数组的效果。

因为随机数的属性,所以rand函数在一些简易的游戏程序中非常常见,如三子棋,扫雷等游戏都可以利用这个函数进行一些随机生成的玩法.


二.与time函数结合生成随机数

在调用rand()函数之前,可以使用srand()函数设置随机数种子,如果没有设置随机数种子,rand()函数在调用时,自动设计随机数种子为1。

随机种子相同,即rand()函数进入的入口相同,则每次产生的随机数也会相同

srand种子可使用传入时间戳的方式来确定入口。如:

srand((unsigned int)time(NULL));

调用srand函数且传入当前时间戳是为了避免每次运行程序产生随机数的入口都相同的情况,用以确定本轮程序随机数生成的入口

注:一次程序运行只需要使用srand函数确定一次入口就行,如果每次随机数的生成都依赖srand则可能会因为生成时间相近而导致生成的随机数相近甚至相同。


三.与取模结合生成指定范围随机数

有时我们需要生成的随机数的范围需要是0-99,又或是类似于100-200这种。而不是0-32767,这时就需要利用rand函数然后取模或加减相应的数就可以达到我们的要求了。

如:要生成0-99的随机数

num1=rand()%100;

生成100-200的随机数

num2=rand()%101+100

生成1800-1950的随机数

num3=rand()%151+1800

综上,可得公式生成n-m的随机数——>rand()%(m-n+1)+n


结语

希望这篇rand()函数的介绍到能对大家有所帮助,欢迎大佬们留言或私信与我交流.

学海漫浩浩,我亦苦作舟!大家一起学习,一起进步!




相关文章
|
5天前
|
C语言
C语言:内存函数(memcpy memmove memset memcmp使用)
C语言:内存函数(memcpy memmove memset memcmp使用)
|
2天前
|
C语言
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
|
2天前
|
C语言
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
|
2天前
|
C语言
(浙大版《C语言程序设计(第3版)》 习题6-5 使用函数验证哥德巴赫猜想 (20分)
(浙大版《C语言程序设计(第3版)》 习题6-5 使用函数验证哥德巴赫猜想 (20分)
|
4天前
|
安全 C语言
【C语言】strcpy与strncpy函数的使用和模拟实现
【C语言】strcpy与strncpy函数的使用和模拟实现
5 0
|
4天前
|
C语言
【C语言】字符分类函数与字符转换函数
【C语言】字符分类函数与字符转换函数
9 1
|
4天前
|
程序员 编译器 C语言
C语言之函数与参数
C语言之函数与参数
5 0
|
5天前
|
C语言
C语言:字符函数和字符串函数(strlen strcat strcmp strncmp等函数和模拟实现)
C语言:字符函数和字符串函数(strlen strcat strcmp strncmp等函数和模拟实现)
|
5天前
|
机器学习/深度学习 C语言
函数递归深入解析(C语言)
函数递归深入解析(C语言)
|
5天前
|
编译器 C语言
函数深入解析(C语言基础入门)
函数深入解析(C语言基础入门)