C语言如何设置随机数

article/2025/9/16 18:21:36

在这里插入图片描述

步骤

  1. 设置一个随机的起点
    那如何设置呢?编写代码srand((unsigned int)time(NULL))。而该代码用到了两个库函数void srand(unsigned int seed)longlong time(NULL),对应的头文件是<stdlib.h>和<time.h>。
  2. 生成随机数
    生成随机数直接编写代码int ret = rand();就行。而int rand(void);为生成随机数的函数,该函数将会生成一个0~32767之间的一个随机数,该函数对应的头文件是<stdlib.h>。
  3. 设置随机数的范围
    如若我想生成一个1~100之间的随机数,我该如何做?其实也不难int ret = rand()%100+1;这样就成了。

讲解

1.在刚开始学习C语言的时候,必然会遇到一类问题“随机值问题”。当然也必然会有一些自认为学的不错的人告诉你:只要引用函数rand()就可以得到随机值。但这种直接引用rand()函数得到的随机值其实它并不随机!!!举个例子:

#include<stdio.h>
#include<stdlib.h>int main()
{int i = 0;do{printf("输入1则继续下去:");scanf("%d", &i);printf("%d\n", rand());} while (i);
}

在这里插入图片描述
重复执行上面这个代码,你将会发现你每一次执行所得的随机值都是一摸一样的,如上图所示。

2.如此看来直接调用rand()函数得到的可不是绝对的随机值呀!!!所以你就必须得好好研究研究rand()这个库函数了(推荐你一个官方的库函数查看软件MSDN,该软件会详细的解释每一个库函数)。
在这里插入图片描述
这就是官方的说明,意思是:rand()函数会返回一个0~RAND_MAX范围内的一个随机数(如果你把RAND_MAX转到定义,你会他就是我们之前所说的数值32767),在调用rand()函数前先得使用srand()函数设置一个随机的起点。所以我们按次改进一下程序:

#include<stdio.h>
#include<stdlib.h>int main()
{int i = 0;do{srand(xxx);printf("输入1则继续下去:");scanf("%d", &i);printf("%d\n", rand());} while (i);
}

在这里插入图片描述
但还是出了问题,并没有达到我们预期产生随机数,如上图所示。

3.我们发现只有当srand(xxx)中的xxx不一样的时候rand()输出的值才也才会不同,也就是说只有当xxx为随机值的时候,rand()才会输出随机值。可这不就又绕回“ 该怎么产生随机值的问题了呀,难道我们无中生有吗?”。
有时候我认为换一种思路或许会有意想不到的收获。就譬如:"时间"是不是永远处于变化的状态,从某种意义上来说相当于就是一个随机值了呀!!!那把时间带入srand()中不就可以让rand()产生随机值了嘛。
那该怎么获取这流动的时间值呢? 下面就要介绍一个库函数了:longlong time(NULL),该函数返回的是一个时间戳即:当前计算机时间减去计算机起始时间 (1970.1.1.0:0:0) 所得的时间换算成秒后,得到的那个值就是时间戳了)。接下来就是把时间戳放入srand()中了,但还要提一嘴,为了使类型可以匹配还是需要把time函数的返回值强制类型转换成(unsigned int),srand((unsigned int)time(NULL))。程序如下:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{int i = 0;do{srand((unsigned int)time(NULL));printf("输入1则继续下去:");scanf("%d", &i);printf("%d\n", rand());} while (i);
}

在这里插入图片描述
看着上图这调试结果,达是达到随机值的目的了,可好像随机浮动的范围有些令人咋舌啊。

4.所以代码肯定还是存在问题的,经过无数次的尝试你终会发现,程序每次调用rand()生成随机数前都会先调用srand()来设置随机起点。可其实并不需要设置这么多次随机起点,整个工程也只需设置一次即可,所以我们应该把代码srand((unsigned int)time(NULL))放到循环外。代码如下

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{int i = 0;srand((unsigned int)time(NULL));do{printf("输入1则继续下去:");scanf("%d", &i);printf("%d\n", rand());} while (i);
}

在这里插入图片描述

5.上面成功生成随机数了,可若还想进一步使得随机数的范围控制在1~100之间,其实也不难rand()%100+1;这样就成了。代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{int i = 0;srand((unsigned int)time(NULL));do{printf("输入1则继续下去:");scanf("%d", &i);printf("%d\n", rand() % 100 + 1);} while (i);
}

在这里插入图片描述
讲到这该如何创建随机数,我想你应该已经有很深的见解了吧!!!

在这里插入图片描述

这份博客👍如果对你有帮助,给博主一个免费的点赞以示鼓励欢迎各位🔎点赞👍评论收藏⭐️,谢谢!!!
如果有什么疑问或不同的见解,欢迎评论区留言欧👀。


http://chatgpt.dhexx.cn/article/Kk5a0FUx.shtml

相关文章

C语言基础教程:C语言随机函数

1. 随机数概述 编写程序过程中&#xff0c;我们经常需要产生一些随机数。随机数在程序中分为两种&#xff1a; 真随机数&#xff1a;完全没有规则&#xff0c;无法预测接下来要产生的数。伪随机数&#xff1a;通过一些预先设定好的规则产生不能简单预测的数。当然&#xff0c…

C语言头文件深入理解

C语言程序中&#xff0c;源文件通常分为两种&#xff1a;一种用于保存程序的声明(declaration)&#xff0c;称为头文件&#xff1b;另一种用于保存程序的实现(implementation)&#xff0c;称为定义(definition)文件。 C程序的头文件以“.h”为后缀&#xff0c;C 程序的定义文件…

第十四章 C语言头文件的编写_C语言模块化编程中的头文件

前面我们在演示多文件编程时创建了 main.c 和 module.c 两个源文件&#xff0c;并在 module.c 中定义了一个函数和一个全局变量&#xff0c;然后在 main.c 中进行了声明。 不过实际开发中很少这样做&#xff0c;一般是将函数和变量的声明放到头文件&#xff0c;再在当前源文件中…

C语言头文件路径相关问题总结说明

聊聊系统路径位置&#xff0c;绝对路径与相对路径&#xff0c;正斜杠 / 与 反斜杠 \ 使用说明 ...... by 矜辰所致目录 前言一、C语言中的头文件引用二、KEIL 中的头文件路径2.1 IncudePaths 指定的路径绝对路径和相对路径正斜杠 / 与 反斜杠 \ 与双斜杠 2.2 include < &…

c语言头文件下载大全,求C语言头文件下载?

传统 C++ #include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #include <errno.h> //定义错误码 #include <float.h> //浮点数处理 #include <fstream.h> //文件输入/输出 #include <iomanip.h> //参数化输入/输出 #inclu…

python读取C语言头文件

本文测试过程使用使用的工程代码上传 python读取C语言头文件&#xff0c;参考博客&#xff0c;有测试记录、使用说明资源-CSDN文库 或者 python读取C语言头文件测试用例&#xff0c;参考博客&#xff0c;有详细说明-嵌入式文档类资源-CSDN文库 背景 在使用python编程过程中…

c语言中头文件及其作用,C语言头文件的作用是什么

C语言头文件的作用&#xff1a;1、头文件是程序各部分之间保证信息一致性的桥梁&#xff0c;是连接程序对象定义和使用的纽带&#xff1b;2、用于指定模块接口的声明放在文件中&#xff0c;文件名中应标明其预期用途。 本文操作环境&#xff1a;Windows7系统&#xff0c;宏基S4…

c语言头文件编写

使用头文件的作用&#xff1a;当前.c文件要使用其它.c文件已定义的全局函数/全局变量时&#xff0c;对使用的全局函数/全局变量进行声明。 文件包含&#xff1a;文件包含语句的功能是把指定的文件插入该语句行位置&#xff0c;从而把指定的文件和当前的源程序文件连成一个源文件…

编写C语言头文件

C语言头文件 我们写c语言代码的第一步总是#include … 这就是引入头文件。#include 命令是预处理命令的一种&#xff0c;预处理命令可以将别的源代码内容插入到所指定的位置&#xff1b;可以标识出只有在特定条件下才会被编译的某一段程序代码&#xff1b;可以定义类似标识符功…

【C语言】头文件书写方法与规范、code::black中如何创建并编写头文件(一看就会)

目录 其他编译器用户&#xff0c;可以直接跳过标题1&#xff0c;看2.头文件编写注意事项&#xff0c;下面有跳转链接&#xff1a; 1.C::B中创建头文件&#xff1a; 2.头文件编写注意事项 3.C语言常见问题推荐链接 1.C::B中创建头文件&#xff1a; file -> new -> fi…

C语言头文件详解

1、include的作用 简单一句话&#xff1a;在include的地方&#xff0c;把头文件里的内容原封不动的复制到引用该头文件的地方。 2、头文件的引用 头文件引用有两种形式&#xff1a;#include < stdio.h> 和 include "main.h “。 用< >引用的一般是编译器提供的…

C++——友元

友元概述 在讲述类的内容时说明了隐藏数据成员的好处&#xff0c;但是有些时候&#xff0c;类会允许有一些特殊的函数直接读写其私有数据成员。 使用friend关键字可以让特定的函数或者别的类的所有成员函数对私有数据成员进行读写。这既可以保持数据的私有性&#xff0c;又能够…

C++之友元函数

目录 1.定义&#xff1a; 1.概念&#xff1a; 2.注意 3.友元的分类&#xff1a; 4.友元函数代码分析&#xff1a; 1.友元函数出现的原因&#xff08;外部函数友元为例&#xff09;&#xff1a; 2.一个外部函数作为多个类的友元函数 3.成员函数友元&#xff1a; 4.类友…

友元 基础详解版 (友元函数、友元类、友元非成员函数和友元成员函数)

友元 一般来说&#xff0c;类的公有成员能够在类外访问&#xff0c;私有的成员只能被类的其他成员函数访问。 在C中&#xff0c;可以定义友元&#xff0c;如果某一个函数定义为类的友元&#xff0c;则该函数就可以访问该类的私有函数。也可以把一个类定义为另一个类的友元。 …

win7快捷方式去箭头_win7旗舰版桌面图标快捷方式箭头变成黑块怎么办?

大家在使用win7的过程中&#xff0c;发现桌面图标快捷方式箭头变成黑块&#xff0c;这时我们应该怎么解决呢&#xff0c;请继续往下看&#xff01; 操作过程&#xff1a; 1、在winr调出运行窗口&#xff0c;键入regedit.exe&#xff0c;回车&#xff0c;打开注册表编辑器。 依次…

去掉桌面快捷方式箭头和快捷方式字样--美化桌面快捷方式

去掉桌面快捷方式箭头和快捷方式字样--美化桌面快捷方式&#xff0c;如图&#xff1a; 下载地址&#xff1a; https://download.csdn.net/download/lhyhr/12700649

恢复Windows7快捷方式小箭头的方法

电脑重新安装了一个Windows7的纯净版系统&#xff0c;结果快捷方式的小箭头不见了。在网上查到的各种修改注册表的方式都试过之后&#xff0c;依然无效。 后来看到有人介绍可以使用软件恢复&#xff0c;于是下载了一个软件&#xff1a;Windows快捷方式小箭头管理&#xff0c;结…

Windows系统桌面快捷方式图标去除小箭头

在注册表”HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons“项下新建字符串值&#xff0c;命名为29&#xff0c;数据为&#xff1a;”%systemroot%\system32\imageres.dll,197“。 注销重新登录后小箭头即不显示&#xff0c;反之则删除名…

win8电脑怎么把计算机快捷方式,Win8怎么隐藏桌面快捷方式小箭头_Win8去掉快捷方式箭头-192路由网...

本文主要介绍了Win8电脑上&#xff0c;去掉桌面快捷方式小箭头的方法。Win8电脑桌面上的快捷方式&#xff0c;默认是有一个小箭头的&#xff0c;看起来非常不美观。 因此&#xff0c;很多用户想把Win8快捷方式上的小箭头去掉&#xff0c;却又不知道应该如何设置。 其实去掉Win8…

去除win10桌面图标快捷方式小箭头

同样用命令行来解决&#xff0c;管理员打开CMD&#xff0c;输入下面代码 &#xff08;也可以做成bat批处理文件&#xff0c;管理员运行&#xff09; 移除小箭头&#xff1a; reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Ic…