c语言中如何实现生成随机数

2023-10-27


一、rand()函数

c语言中自带的生成随机数的函数rand(),只要引用头文件#include<stdio.h>就可以使用,但是它存在很大的弊端,每次调用这个函数生成的连续的随机值都是与上次相同的,因此需要改进。
代码如下(示例):

#include<stdlib.h>
int ret=rand();

二、rand()+srand()

同样的,只要引用头文件#include<stdlib.h>就可以使用这两个函数,srand()函数的作用是设置rand()随机数的生成起点,但也有个弊端,若传给srand()的参数是个定值,那么rand()函数每次生成的随机数都是相同的.
代码如下(示例):

#include<stdlib.h>
srand(1);
int ret=rand();

三、rand()+sranf()+time()

所以若想rand()函数每次生成的随机数不一样,那么传给srand()的参数就应该是个时刻都在变化的值。
那么电脑时刻变化的值是什么呢?就是时间!所以我们需要把电脑此时的时间传给srand(),那么我们就要用到time()函数,将此刻电脑的时间戳传给srand()函数,那么rand()函数每次生成的随机值就会不同,我们也就真正意义上实现了生成一个随机数
代码如下(示例):

#include<stdlib.h>
#include<time.h>
srand((unsigned int)time(NULL));
int ret=rand();

补充:因为传给srand()函数的值必须是unsigned int型的值,所以将time()的值强转成unsigned int型的值


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c语言中如何实现生成随机数 的相关文章

  • URL 的正则表达式

    我已经编写了正则表达式来验证 URL 它可以是这样的 example com www example com http www example com http www example com https www example com h
  • 在c中用以下结构填充矩阵

    我有以下结构 typedef struct arr integer int size int arr arr arr integer arr arr integer alloc arr integer int len arr arr int
  • .Net Core 中 String 默认不可序列化吗?

    我正在查看其他的 Fortify 静态分析安全测试 SAST 扫描报告 以识别和抑制误报 应用程序框架是C NET Core SAST 报告部分内容如下 Method1 在第 111 行将不可序列化的对象存储为 HttpSessionSta
  • 除了第一列之外,Gridview 行可点击?

    我使用以下代码使 gridview 的整行可单击 protected void gridMSDS RowDataBound object sender GridViewRowEventArgs e if e Row RowType Data
  • 如何使用 saxon 将文档类型参数传递给 xslt?

    对于发送原子数据类型将使用类似 transformer SetParameter new QName customXml new XdmAtomicValue true 如何将 XML Node 作为参数从 C 传递给 XSLT 你能帮我么
  • 使用 std::string 导致 Windows“找不到入口点”[重复]

    这个问题在这里已经有答案了 当我用 G C C 编译它时 include
  • 将 Uploadify 与 Sharepoint 和 .net 结合使用

    我在共享点页面上有一些由 JQuery 生成的 html 我想在这个 html 中使用 uploadify 将文件上传到服务器 亚历山大 https stackoverflow com users 25427 alexander gyosh
  • 如何在Qt无框窗口中实现QSizeGrip?

    如何使用 Qt 无框窗口实现 QSizeGrip 代码会是什么样的 您只需在布局内窗口的一角添加 QSizeGrip 即可使其保持在该角落 QDialog dialog new QDialog 0 Qt FramelessWindowHin
  • 如何在 asp .net mvc 2 中对不直接属于我的模型的对象使用 DisplayFor()?

    我确信我在这里遗漏了一些非常简单的东西 我创建了一个自定义日期时间显示模板 使用以下方法时效果很好 但是 我遇到了这样的情况 在部分控件内 我在 for 循环中迭代模型中的对象 我想要一个 DateTime 属性来使用显示模板 但我不知道如
  • DLL 需要访问其应用程序的符号

    在 C 中 DLL 是否可以访问加载它的应用程序的某些符号 我有一个加载插件 dll 的应用程序 这些插件需要访问该应用程序的某些API 是否可以在不创建共享此 API 的新 DLL 的情况下实现此目的 函数指针结构适合这种情况吗 示例 主
  • 从 Linq 的列表中选择多个字段

    在 ASP NET C 中 我有一个结构 public struct Data public int item1 public int item2 public int category id public string category
  • 将 libpng 链接到 android 原生项目

    我在尝试在本机 Android 项目中加载 libpng 时遇到问题 编译器似乎无法识别 libpng 函数 但可以识别类型 如 png byte 它可以正常编译类型 但如果我添加函数 则会抛出错误 这是编译输出 Windows 7 cmd
  • C++ 静态工厂构造函数

    我正在进行模拟 它需要创建多个相当相似的模型 我的想法是有一个名为 Model 的类并使用静态工厂方法来构造模型 例如 模型 createTriangle or 模型 createFromFile 我从以前的 java 代码中汲取了这个想法
  • System.Drawing.Icon 构造函数抛出“操作成功完成”异常

    在 Windows XP 计算机上 以下代码抛出 System ComponentModel Win32Exception 并显示消息 操作成功完成 System Drawing Icon icon new System Drawing I
  • 正则表达式基于组的不同替换?

    所以我对正则表达式比较陌生 并且做了一些练习 我正在玩一个简单的 混淆器 它只是寻找 dot or dot or at or at 不区分大小写 并且在匹配项之前或之后有或没有任意数量的空格 这是针对通常情况的 someemail AT d
  • 更改预处理到文件后出现错误 1 ​​错误 LNK1104

    我必须使用预处理器 所以我改变了 配置属性 gt C gt 预处理器 gt 预处理为文件 gt 是 并得到错误 错误 1 错误 LNK1104 无法打开文件 Debug asnreal obj 这个问题的解决办法 我必须在 lib 文件的路
  • C中的pipe()和fork()

    我需要创建两个子进程 一个子进程需要运行命令 ls al 并将其输出重定向到下一个子进程的输入 而下一个子进程又将对其输入数据运行命令 sort r n k 5 最后 父进程需要读取该数据 已排序的数据 并将其显示在终端中 终端中的最终结果
  • 构建 OpenCV 时出错 :: MonitorFromRect 未在此范围内声明

    我试图建立OpenCV version 2 4 8与它一起使用CodeBlocks and MinGw 我按照以下指示进行操作here http kevinhughes ca tutorials opencv install on wind
  • AddressAccessDeniedException :无需 netsh 即可解决它?

    我遇到了异常AddressAccessDeniedException因为我的processus没有注册URL的权限 我首先以管理员身份运行我的程序 好的 它成功了 但我现在想要分发我的应用程序 并且我希望每个用户都能够运行它 而不必成为管理
  • GetActiveObject() 与 GetObject() -- MK_E_UNAVAILABLE 错误

    All 我在将一些 VBA 代码转换为 C 时遇到一些问题 我们有一个充当本地 COM 服务器的第 3 方应用程序 在我们使用的VBA代码中获取对象 获取对现有对象的引用 e g Set appHandle GetObject ProgId

随机推荐

  • Idea intellij 如何创建多个Maven 模块进行协作?

    第一 根工程 先选择新建一个maven工程 不打勾Create from archetype 直接选择next 填写总的工程名字 这样就可以得到如下的项目 删除src下面的文件 比如现在的项目结构要做成如下形式 LS web admin c
  • 2020年12月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

    C C 编程 1 8级 全部真题 点这里 第1题 数组指定部分逆序重放 将一个数组中的前k项按逆序重新存放 例如 将数组8 6 5 4 1前3项逆序重放得到5 6 8 4 1 时间限制 1000 内存限制 65536 输入 输入为两行 第一
  • 国产免费虚拟化OVM与 OpenStack对比

    OpenStack作为一款全球化的开源软件 需要丰富而强大的技术团队进行深度开发与维护 OVM作为国产免费的虚拟化软件 有开箱即用的优势 不需要二次投入太多成本 下面对两个产品的深度对比 OVM是开箱即用的一站式解决方案 OpenStack
  • Gitee码云如何邀请合作者加入

    问题 在创建了项目之后 想邀请别人加入 始终找不到邀请的入口 解决方案 1 选中项目 2 点击管理 3 项目成员管理 开发者 添加项目成员 邀请用户 4 会有三种不同的邀请方式 随意邀请了
  • 蓝桥杯乘积尾0(分析)

    1 问题描述 如下的10行数据 每行有10个整数 请你求出它们的乘积的末尾有多少个零 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3
  • Error:java: 错误: 不支持发行版本 5 解决方法(详细)

    使用配置 编译器 idea JDK jdk 13 注意 文章篇幅有点长 若省时间可直接看方法二或者方法三 Error java 错误 不支持发行版本 5 出现原因 本地配置jdk和idea默认的jdk不匹配 方法一 File gt Proj
  • vue脚手架vue-cli的卸载和安装

    若电脑之前已经安装过vue cli了 但是版本过低 比方说当前vue cli的版本为2 9 6 然后我想升级到vue cli的最新版本4 0 5 则需要将旧版本卸载 然后再重新安装 vue cli vue cli vue3 0之前版本使用此
  • PHP对接口执行效率慢的优化

    PHP对接口执行效率慢的优化 造成执行效率低的原因可以由很多方面找原因 从代码层面 代码质量低 执行效率也会有很大影响的 从硬件方面 服务器配置低 服务器配置是基础 这个跑不动肯定慢 从数据量方面 查询数据量过多 sql语句过于繁杂 执行缓
  • 安装yarn

    Install via npm It is recommended to install Yarn through the npm package manager which comes bundled with Node js when
  • c字符串函数sprintf()和snprintf()详解

    sprintf 是个变参函数 定义格式如下 int sprintf char buffer const char format argument 精华显然在于第二个字符串 格式化字符串 1 格式化数字字符串 sprintf最常见的应用之一莫
  • React中如何使用refs

    ref是React中的一种属性 当render函数返回某个组件的实例时 可以给render中的某个虚拟DOM节点添加一个ref属性 如下面的代码所示 html view plain copy print
  • Node学习1

    Node 加载模块 加载内置模块和第三方模块直接require 名字 自定义模块需要加路径 require 加载模块时候会自 动调用被加载模块代码 require永远以module export所指向的对象为准 模块作用域 和函数作用域类似
  • 解决VScode使用git报错:Git: Bad status code: 500

    VS CODE GIT 500 问题处理 pudn com相关错误的处理链接博客 作为记录
  • C++ STL各标准容器使用手册

    原文 http blog csdn net nohackcc article details 8900017 1 vector 内部实现 数组 就是没有固定大小的数组 vector直接翻译是向量的意思 支持操作 begin 取首个元素 返回
  • 第10课 微信小程序数据存储(同步缓存、异步缓存,本地读取缓存):

    第10课 微信小程序数据存储 同 异步缓存 本地读取缓存 同步缓存 wx setStorageSync key value 异步缓存 wx setStorage Object object 同步删除缓存 wx removeStorageSy
  • java开发:java多线程(三):lock方式实现线程同步机制

    java多线程系列文章 java多线程 一 synchronized 对象锁和类锁的区别 java多线程 二 wait sleep join 和yield 区别 这章博客讲解lock如何实现同步机制 比较和synchronized 的区别
  • unity项目过程中本菜新遇到的问题和解决方案

    试出了奇怪的效果 还挺好看 canvas background text 在unity中打开的vs编辑器中没有代码提示 流星曳尾 博客园 这里我一开始不知道为啥text显示不出来 调成screen size才发现 是canvas方向反了 调
  • C语言-01

    以下内容为个人笔记 无实际参考意义 取地址符 int a 9 int pa 9 定义了一个今天类型的变量a 给他的值为9 定义了一个int类型的指针pa 指向变量a的地址 指定a输出的结果为9 指定 a输出的结果为存放a变量的地址 指定pa
  • linux如何做到不丢日志,rsyslogd日志丢失的解决

    最近发现跑keepalived的几台机器的日志总是打印不完 还好给抛了一个报错 信息如下 root yw lvs2 backup etc tail n 1000000 var log messages 20130526 grep rate
  • c语言中如何实现生成随机数

    文章目录 一 rand 函数 二 rand srand 三 rand sranf time 一 rand 函数 c语言中自带的生成随机数的函数rand 只要引用头文件 include