C/C++中生成随机序列——随机函数的选择和自我实现

2023-11-07

一、缘由

最近需要将windows下的项目移植到linux下,但因为项目使用到随机函数,导致最后两边的结果有些微差异,因此需要将两边随机函数统一来保证运行结果每一步能对应上。
大家常用的随机函数有srand()/rand();

二、srand()/rand()

1.项目中采用的随机数生成函数是 rand()。
rand()返回一随机,数值的范围在0至RAND_MAX 间。

它的内部实现是用线性同余法做的,产生的新随机数作为下一次随机数的种子,它不是真的随机数,因其周期特别长,故在一定的范围里可看成是随机的。
线性同余法的原理:
X_{n+1} = ( a * X_n + c ) mod m

windows 下RAND_MAX 为32767(16位)。
linux下为2147483647(32位)
如果不用srand()指定随机函数,指定默认情况下种子为1。

2.其用法为:
void srand(unsigned int seed);
int rand();

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

C/C++中生成随机序列——随机函数的选择和自我实现 的相关文章

随机推荐

  • 微信小程序的使用教程

    一 首先我们要去安装一个微信开发者工具 微信开发者工具下载 二 注册一个微信小程序 生成ID 注册链接 注册好之我们打开开发管理 开发设置 复制App的ID 三 打开微信开发者工具 按图示填写完整之后 我们点击确定 这样你就创建好了一个小程
  • Windows安装GPU环境CUDA、深度学习框架Tensorflow和Pytorch

    Windows安装GPU环境CUDA 深度学习框架Tensorflow和Pytorch 1 未安装CUDA使用tensorflow报错 import tensorflow as tf 2022 03 06 15 14 38 869955 W
  • JavaScript数据类型

    变量 1 概述 变量 variables 是计算机内存中存储数据的标识符 根据变量名称可以获取到内存中存储的数据 甚至数据可以修改 变量相当于一个容器 内部可以存储任意类型的数据 使用变量时 用的是内部存储的数据 本质 变量是程序在内存中申
  • 服务器发送消息到客户端互斥,分布式相关/Zookeeper.md · 。W/Java-info - Gitee.com

    Zookeeper 概述 ZooKeeper是一种分布式协调服务 用于管理大型主机 在分布式环境中协调和管理服务是一个复杂的过程 ZooKeeper通过其简单的架构和API解决了这个问题 ZooKeeper允许开发人员专注于核心应用程序逻辑
  • Linux服务器上通过miniconda安装R(2022)

    安装miniconda 下载最新版miniconda wget https repo continuum io miniconda Miniconda3 latest Linux x86 64 sh 安装 bash Miniconda3 l
  • IoT reigns supreme at upcoming Embedded Linux Conference

    本文转载至 http linuxgizmos com linux foundation details embedded linux conference agenda 转载说明 今年的嵌入式 Linux 大会内容非常丰富 包括 Linus
  • ImportError: PILKit was unable to import the Python Imaging Library.

    migrate数据到数据库时遇到的错误 ImportError PILKit was unable to import the Python Imaging Library Please confirm it s installed and
  • ESP8266+天猫精灵+贝壳物联 简单直接点亮一个LED灯

    本文将介绍如何通过天猫精灵透过贝壳物联来使ESP8266点亮一个灯 如果大家途中遇到什么奇葩问题 请努力移驾各大搜索神器或查看贝壳物联帮助文档解决 正所谓冤有头 本文主要分为以下几个部分哦 硬件部分 软件下载 软件工具和软件固件 固件刷写
  • 网络和网络协议

    一 网络 一 网络的概念 两个不在同一地理位置的主机 通过传输介质和通信协议 实现通信和资源共享 二 网络的发展史 网络的发展史可以追溯到20世纪60年代末期 当时美国国防部高级研究计划署 ARPA 开始研究一种名为ARPANET的计算机网
  • video downloadhelper需要合作应用_Streamlit是python的一个机器学习、数据科学、应用开发框架...

    1 说明 初探 1 1 Streamlit 1 1 1 是一个开源Python库 可轻松构建用于机器学习的漂亮应用程序 1 1 2 是一款专为机器学习工程师创建的免费 开源 app 构建框架 1 1 3 是一个简单而强大的应用程序模型 可让
  • gdb调试教程

    gdb调试是c c 代码调试最重要的工具了 我们今天来系统熟悉一下 太长不看版 注意 如果针对cmake项目 需要把编译模式从release改成debug 否则无法定位到准确的行数 进入gdb debugger界面 gt gdb filen
  • 机器学习sklearn之朴素贝叶斯

    朴素贝叶斯 朴素贝叶斯和其他绝大多数的分类算法都不同 对于大多数的分类算法 比如决策树 KNN 逻辑回归 支持向量机等 他们都是判别方法 也就是直接学习出特征输出Y和特征X之间的关系 要么是决策函数Y f X 要么是条件分布P Y X 但是
  • 界面测试的测试点

    易用性测试 1 是否有快捷键 快捷键不能重复 2 是否有热键 热键不能重复 3 不要用数据将用户包围 使用便于拥护迅速吸取信息的方式表现信息 4 减少用户输入动作数量 5 默认按钮要支持Enter 操作 即按Enter 后自动执行默认按钮对
  • 2022新版Git教程 从入门到实战(一)安装Git

    个人社区 小鱼干爱编程 最近专栏 Git教程专栏 文章目录 1 Git简介 2 下载并安装Git 2 1 安装 Git 2 37 3 2 1 1下载git 2 1 2 选择安装的版本 2 2安装Git 2 2 1 下载完成后打开文件开始安装
  • vue2常见面试题

    文章目录 1 vue 修改数据页面不重新渲染 数组 对象的响应式 vue 里面是怎么处理的 2 生命周期 Vue 生命周期都有哪些 父子组件生命周期执行顺序 3 watch 和 computed 的区别 4 组件通信 组件间传值 5 nex
  • 华为OD机试 - 数组连续和(Java)

    题目描述 给定一个含有N个正整数的数组 求出有多少个连续区间 包括单个正整数 它们的和大于等于x 输入描述 第一行两个整数N x 0 lt N lt 100000 0 lt x lt 10000000 第二行有N个正整数 每个正整数小于等于
  • python怎么爬取app数据_python高级教程 爬虫抓取App数据

    教程介绍 本课程主要是利用移动端的自动化控制工具来抓取app数据 并且不讲Python基础 更注重实战 另外讲师思路清晰 按照思路手写代码 在使用工具或写代码的过程中也会给大家讲解很多小技巧 相信大家在边看边练的过程中一定有所收获 学习地址
  • Java知识点回顾(Tree)

    一 二叉树 1 二叉树的基本定义 二叉树是每个节点最多有两个子树的树结构 常见的基本形态有 二叉树可以是空集 跟可以有空的左子树或右子树 左右子树都为空 2 二叉树的五种基本性质 二叉树的第i层上的节点数最多为2 i 1 i gt 1 例如
  • C#:EXCEL退出会,进程/线程残留问题

    应该是微软的一个BUG吧 操作完EXCEL并退出后 仍然会有一个EXCEL的进程留存 解决方法 用API 将进程杀掉 using System Runtime InteropServices DllImport User32 dll Cha
  • C/C++中生成随机序列——随机函数的选择和自我实现

    一 缘由 最近需要将windows下的项目移植到linux下 但因为项目使用到随机函数 导致最后两边的结果有些微差异 因此需要将两边随机函数统一来保证运行结果每一步能对应上 大家常用的随机函数有srand rand 二 srand rand