C++伪(pseudo)随机数生成及简单应用
- 两个主要函数
- 两个简单应用
如果设定种子值,matlab:rng(),c++:srand(unsignd),则最终得到的随机数,无论是一个还是一个vector,都是固定的,可见有一种内部的机制(mechanism)保证了随机数的生成,该机制以rng或者srand的参数为参数,可见随机数并不真正“随机”,是为伪随机数。
两个主要函数
属于<cstdlib>标准库,该库又被包含在<iostream>中。
- int rand()
从srand(seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))之间的随机整数(有某些均匀分布uniformed distribution的味道),注意是整数。整数相除如果不事先进行类型转换的话,得到的值仍为整数。所以如果想产生[0, 1)之间的伪随机数:
double randomVal = rand()/double(RAND_MAX);
- void srand(unsigned seed)
seed是rand()的种子,也被用来初始化rand()的起始值(与实验不符,有待考证,如果这样成立的话,可实现随机数区间的一种截断)。如果希望rand()在每次程序运行时产生的数值不同,必须给传srand一个变直,这个变值可以手动确定,也可以当前经历的时间(elapsed time,time_t(0),返回从1970年1月1日00:00:00到目前为止所经历的时间)作为其值(需包含<ctime> 头文件)。
srand(unsigned(time_t(0)));
两个简单应用
获得0~10之间的随机整数(不包括10)
#include <cstdlib>#include <ctime>#include <stdio.h>int main(int, char**){srand(unsigned(time_t(0)));int rnd_vals[10];for (size_t i = 0; i < 10; ++i)rnd_vals[i] = rand() % 10;return 0;}
生成任意区间任意个数的服从均匀分布的数据,例10个五维的[-5, 5]之间的数据
#include <cstdlib>
#include <ctime>
#include <vector>
#include <iostream>
#include <iomanip>
using namespace std;void print(const vector<vector<double> >& X)
{for (size_t i = 0; i < X.size(); ++i){for (size_t j = 0; j < X[i].size(); ++j)cout << setw(8) << X[i][j] << " ";cout << endl;}
}int main(int, char**)
{int N = 10, d = 5;srand(unsigned(time_t(0)));vector<vector<double> > X;for (size_t i = 0; i < N; ++i){X.push_back(vector<double>());for (size_t j = 0; j < d; ++j)X.back().push_back(10 * rand() / double(RAND_MAX) - 5);}print(X);return 0;
}
C++伪(pseudo)随机数生成及简单应用相关推荐
- Hadoop伪分布安装及简单使用
如何安装Hadoop 参考: http://dblab.xmu.edu.cn/blog/install-hadoop/ 设置Hadoop环境变量 export HADOOP_HOME=/usr/loc ...
- python 伪多线程_Python实现简单多线程任务队列
最近我在用梯度下降算法绘制神经网络的数据时,遇到了一些算法性能的问题.梯度下降算法的代码如下(伪代码): 1 2 3 def gradient_descent(): # the gradient de ...
- 伪类选择器的简单介绍
一.伪类选择器介绍 伪类选择器(简称:伪类)通过冒号来定义,它定义了元素的状态,如点击按下,点击完成等,通过伪类可以为元素的状态修改样式. 伪类的功能和一般的DOM中的元素样式相似,但和一般的DOM中 ...
- java中随机数彩票练习_基于javascript实现彩票随机数生成(简单版)
本文实例讲解了JavaScript 实现彩票中随机数组的获取详细代码,分享给大家供大家参考,具体内容如下 效果图: 具体代码: Math.random方法彩票随机数的生成 开始 获取随机数组 //获取 ...
- 蒙特卡洛 c语言,从伪随机数的产生到高大上的蒙特卡洛算法(C语言实现)
一 准备 1 生成任意区间任意大小的伪随机数 2 什么是蒙特卡洛算法 二蒙特卡洛算法的实现 1 pi的蒙特卡洛计算方式 2 特殊图形的蒙特卡洛计算方式 通过这篇短文想说明两个道理: 看似高大上.神秘兮 ...
- html 伪元素放入标签,CSS中的before和:after伪元素使用详解
如果你一直密切关注着各种网页设计的博客,你可能已经注意到了:before和:after伪元素已经在前端开发中获得了相当多的关注.特别是在Nicolas Gallagher的博客中,后期运用了很多伪类元 ...
- html before边距,CSS中的before和:after伪元素使用详解
如果你一直密切关注着各种网页设计的博客,你可能已经注意到了:before和:after伪元素已经在前端开发中获得了相当多的关注.特别是在Nicolas Gallagher的博客中,后期运用了很多伪类元 ...
- ICCV2021 Oral SimROD:简单高效的数据增强!华为提出了一种简单的鲁棒目标检测自适应方法...
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨小马 来源丨我爱计算机视觉 ▊ 写在前面 本文提出了一种简单有效的鲁棒目标检测无监督自适应方法( ...
- Hadoop学习之以伪分布模式部署Hadoop及常见问题
Hadoop既可以以单机模式运行,也可以以伪分布模式运行,这两种模式都是为了使用者方便学习和调试Hadoop,要想发挥Hadoop分布式.并行处理的优势,还须以分布式模式来部署运行Hadoop.单机模 ...
最新文章
- 反向词典_根据描述查找词语
- Maven中mirrors和repository的关系
- 【Unity】publishing setting keystore作用
- java 替换四个字节的字符 '\xF0\x9F\x98\x84\xF0\x9F)的解决方案
- Java 8 简明教程
- python练习笔记——分解质因数
- 关于javascript dom扩展:Selector API
- 新媒体运营的“钱途”在哪里?
- 如何在iOS和WatchKit中更改图像tintColor
- C++函数重载与引用的较好的练习实例
- Linux系统中运行jar包的四种方式
- mysql批量插入数据
- 基于python版本的谷歌GEE云计算平台使用,以DEM数据下载为例(GEE系列1)
- Junit 5 实现testsuite
- angular整合环信webIM
- 小程序性能和体验优化方法
- java 微信公众号发红包,Java微信支付-微信红包
- 数字藏品的价值是什么?
- 安装银河麒麟系统失败是什么原因
- PHP支付宝转账到支付宝账号/支付(公钥证书方式)
热门文章
- 熊海博客php版本,xhcms_v1.0 熊海CMS是由熊海开发的一款可广泛应用于个人博客 联合开发网 - pudn.com...
- Go-fastdfs分布式文件系统搭建
- linux查看接口的命令,linux shell命令查看接口索引--ip link show
- C++设计模式之Singleton模式(单例模式)
- tf.train.slice_input_producer(转)
- rsync java_Linux 同步工具rsync学习
- 循环控制语句转换为汇编
- Cocos2d Box2D之浮动刚体
- Gulp解决发布线上文件(CSS和JS)缓存问题
- oracle11g ADR 位置