尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

C语言 随机数 rand()/srand() 函数

C语言 随机数 rand()/srand() 函数 C语言的rand()生成的是伪随机数并非真正意义上的随机数必须配合srand()设置种子才能实现动态随机效果。本文剔除冗余内容保留所有核心原理、规则与标准写法。一、核心原理为什么 rand() 会重复1. rand() 特性rand() 用于生成0~RAND_MAX区间的整数底层是固定数学算法输出结果完全依赖随机种子seed。2. 重复的根本原因代码中不手动设置种子时系统会默认种子固定为 1。算法固定 种子固定 每次运行的随机数序列完全一致二、srand() 核心作用srand(seed)为 rand() 设置初始随机种子规则如下种子相同 → 随机数序列完全相同种子不同 → 生成全新的随机数序列三、动态随机标配srand(time(NULL))想要每次运行程序随机数不同必须保证种子动态变化。time(NULL)可获取系统实时时间戳秒级动态变化、永不重复以此作为种子就能实现真正的动态随机效果。四、强制规范易错点1. 头文件依赖#include stdlib.h// 用于 rand()、srand()#include time.h// 用于 time() 时间戳函数2. 核心禁忌srand() 全局仅执行一次严禁写在循环内time() 每秒更新一次循环内重复设置种子会导致同一秒内所有随机数全部重复。正确位置main 函数开头程序初始化阶段执行一次。五、标准完整代码#include stdio.h #include stdlib.h #include time.h int main(void) { // 仅初始化一次随机种子 srand((unsigned int)time(NULL)); // 生成随机数 for (int i 0; i 5; i) { printf(%d , rand()); } return 0; }六、核心关系总结rand()随机数生成器无自主随机能力依赖种子srand()种子设置器决定随机数序列默认效果无 srand种子固定为1随机数永久重复最优写法srand(time(NULL)) 实现动态真随机极简口诀速记rand 产数靠种子默认固定不随机 srand 配 time 动态改只写一次不踩坑。
返回列表