资讯动态

【C语言】生成随机数(rand\srand\time)

发布时间:2026/8/5 13:00:01 来源:尧图企业网站定制
一、随机数1真随机数没有规律的随机生成完全不可预测2伪随机数通过一个确定的数学公式计算出来看起来毫无规律但本质上是可预测的、可重复的3密码学安全伪随机数介于上面两者之间的一个特殊分类本质上还是用算法算出来的伪随机但是使用了极其复杂的加密算法二、rand \ srand \ time 函数2.1 rand()随机数生成器它会返回一个介于 0 到 RAND_MAX 之间的整数注需要包含头文件#include stdlib.hRAND_MAX是一个常量不同的编译器和系统上可能不同在大多数常见的系统中它的值通常是32767内部是通过一个固定的数学公式来算数字需要提前给它设定一个初始值种子每次程序启动时都会根据设定的种子计算出一个值不设置的话默认种子是1注同一个种子每次运行时产生的随机数是相同的不管运行多少次2.2 srand()随机数种子设置器它的作用是给 rand() 提供一个初始值种子但是它也需要接收一个 unsigned int无符号整数作为种子注需要包含头文件#include stdlib.h注同一个种子每次运行时提供给rand的随机数种子就是相同的不管运行多少次2.3 time()时间获取工具time() 的返回值就是从 1970年1月1日 00:00:00 开始一直到你调用这个函数的那一瞬间总共流逝的秒数他是一直在变化的注需要包含头文件#include time.hsrand和rand使用时如果srand初始值是固定的那么给rand提供的种子就是固定的每次生成的随机数就是固定的所以我们使用time提供一个时刻变化的值三、生成步骤我们常用的C语言随机数是伪随机数生成步骤分为三步1设置随机数种子初始化srand(time(NULL));time() 函数其实可以接收一个指针参数用来直接存储时间但我们这里不需要存储只需要它的返回值所以传入 NULL空指针即可这样我们就将time的返回值作为srand的种子来生成一个rand的种子传给了rand函数保证rand每次生成的数值都不相同2获取基础随机数int num rand();这个时候我们运行程序就可以得到一个随机数rand生成的数会很大我们通常需要指定范围的数比如 1 到 1003限定数值范围取模运算如果想生成[m, n]之间的随机整数公式为int result rand() % (n - m 1) m;计算% (n - m 1) 的目的是算出这个范围内总共有多少个数计算 m 是为了把起始点从 0 偏移到 meg:比如我想生成5-10的随机数m 5, n 105、6、7、8、9、10我们用 n - m 1算出来这个区间一共有6个数rand() % 6只能生成0、1、2、3、4、5这6个数相当于随机数的起始点是0这时候我们再 5 ( m )将起始点改为5,那么生成的随机数就变为5、6、7、8、9、10

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价