当前位置: 首页 > news >正文

C语言如何生成随机数

随机数需要的函数 / 生成随机数教程

  • 1. rand函数
  • 2. srand函数(rand函数的种子)
  • 3. time函数
  • 4.生成随机数以及控制随机数范围
    • 如何控制随机数大小:

1. rand函数

C语言提供了一个函数叫rand,属于<stdlib.h>库函数,这函数是可以生成随机数的,函数原型如下所示:

intrand (void);

rand函数生成的随机数是伪随机的,细节如下:两次运行随机数相同

2. srand函数(rand函数的种子)

C语言中又提供了一个函数叫srand,属于<stdlib.h>库函数,用来初始化随机数的生成器(种子)的,srand的原型如下:

voidsrand(unsignedintseed);

程序中在调用rand函数之前先调用srand函数,通过srand函数的参数seed来设置rand函数生成随机数的时候的种子,只要种子在变化,每次生成的随机数序列也就变化起来了.
那也就是说给srand的种子是如果是随机的,rand就能生成随机数:在生成随机数的时候义需要一个随机数,这就矛盾了。

srand函数是不需要频繁调用的,一次运行的程序中调用一次就够了。

3. time函数

在程序中我们一般是使用程序运行的时间作为种子的,因为时间时刻在发生变化的。在C语言中有一个函数叫time,就可以获得这个时间,此函数属于<time.h>库函数里,time函数原型如下:

#include<time.h>time_ttime(time_t*timer);

time函数会返回当前的日历时间,具实返回的是1970年1月1日0时0分0秒到现在程序运行时间之间的差值,单位是秒。返回的类型是time_t类型的,time_t类型本质上其实就是32位或者64位的整型类型。
time函数的参数timer如果是非NULL的指针的话,函数也会将这个返回的差值放在timer指向的内存中带回去。
如果timer是NuLL,就只返回这个时间的差值。time函数返回的这个时间差也被叫做:时间截

4.生成随机数以及控制随机数范围

生成随机数如下:

srand((unsignedint)time(NULL));//给srand传入一个变化的值//srand函数一次运行的程序调用一次就可以intr=rand();//生成随机数

如何控制随机数大小:

如果我们要生成0~99之间的随机数,方法如下:

rand()%100//余数的范围是0~99

如果要生成1~100之间的随机数,方法如下:

rand()%100+1//100的余数的范围是0~99,0~99的数字+1,范围是1~100

如果要生成100~200的随机数,方法如下:

rand()%(200-100+1)//余数的范围是0~100,加100后就是100~200

所以如果要生成a~b的随机数,方法如下:

a+rand()%(b-a+1);
http://www.cnnetsun.cn/news/3654408.html

相关文章:

  • ChatGPT远程配对功能详解:跨设备任务同步与移动端操作指南
  • 终极Windows风扇控制指南:如何用FanControl打造个性化智能散热系统
  • AI招聘系统功能评级体系设计与技术解析
  • AI破解高维数学难题:亲吻数问题的突破
  • 雷达硬件加速器核心配置:FFT、幅度计算与实时处理实战
  • Git push 408 超时、远程断开解决办法
  • OpenClaw多模态AI框架核心技术解析与实践
  • sqli靶场1~5、9关
  • Linux系统编程:从libc到glibc的演进与优化实践
  • 5分钟学会AI自动去除硬字幕:免费开源工具终极指南
  • C++ Win32桌面应用集成WebView2控件:从零构建混合开发窗口
  • Linux信号机制解析与高级应用实践
  • AI智能降重工具:论文查重与写作优化全攻略
  • 机器学习在工程结构优化中的应用与实践
  • 多因子量化交易策略:机器学习在股票预测中的应用
  • 氢硼聚变技术:原理、挑战与清洁能源前景分析
  • Unity音频编码实战:使用Lame-For-Unity插件实现MP3实时编码与优化
  • 深入解析TI CC27xx时钟管理:从基础原理到低功耗实战
  • AAAI 2026 | LungNoduleAgent:用于肺结节精准诊断的协作式多智能体系统
  • C++基础入门:从指针、内存管理到面向对象编程实战
  • 【AI自动化数据同步终极指南】:20年架构师亲授5大避坑法则与实时同步黄金配置
  • Facebook 变革频出:模仿 TikTok、推新应用、改验证规则,能否留住用户?
  • C++ 条件变量信号丢失与虚假唤醒:成因与解决方案
  • NCM格式解密与音频转换:Python实现网易云音乐文件批量转MP3/FLAC
  • Unity游戏配置管理新思路:Luban插件实现Excel到Json自动化流程
  • C++ string类模拟实现:从深拷贝到移动语义的底层原理与实践
  • 【JAVA毕设源码分享】基于springboot的美食分享平台的设计与实现(程序+文档+代码讲解+一条龙定制)
  • CC2430 DMA控制器实战指南:从原理到嵌入式系统高效数据搬运
  • 影刀RPA京东商品数据采集实战:价格库存评分批量监控
  • C/C++ BFS算法面试实战:从核心原理到高频考点解析