• 两个主要函数
  • 两个简单应用

如果设定种子值,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)随机数生成及简单应用相关推荐

  1. Hadoop伪分布安装及简单使用

    如何安装Hadoop 参考: http://dblab.xmu.edu.cn/blog/install-hadoop/ 设置Hadoop环境变量 export HADOOP_HOME=/usr/loc ...

  2. python 伪多线程_Python实现简单多线程任务队列

    最近我在用梯度下降算法绘制神经网络的数据时,遇到了一些算法性能的问题.梯度下降算法的代码如下(伪代码): 1 2 3 def gradient_descent(): # the gradient de ...

  3. 伪类选择器的简单介绍

    一.伪类选择器介绍 伪类选择器(简称:伪类)通过冒号来定义,它定义了元素的状态,如点击按下,点击完成等,通过伪类可以为元素的状态修改样式. 伪类的功能和一般的DOM中的元素样式相似,但和一般的DOM中 ...

  4. java中随机数彩票练习_基于javascript实现彩票随机数生成(简单版)

    本文实例讲解了JavaScript 实现彩票中随机数组的获取详细代码,分享给大家供大家参考,具体内容如下 效果图: 具体代码: Math.random方法彩票随机数的生成 开始 获取随机数组 //获取 ...

  5. 蒙特卡洛 c语言,从伪随机数的产生到高大上的蒙特卡洛算法(C语言实现)

    一 准备 1 生成任意区间任意大小的伪随机数 2 什么是蒙特卡洛算法 二蒙特卡洛算法的实现 1 pi的蒙特卡洛计算方式 2 特殊图形的蒙特卡洛计算方式 通过这篇短文想说明两个道理: 看似高大上.神秘兮 ...

  6. html 伪元素放入标签,CSS中的before和:after伪元素使用详解

    如果你一直密切关注着各种网页设计的博客,你可能已经注意到了:before和:after伪元素已经在前端开发中获得了相当多的关注.特别是在Nicolas Gallagher的博客中,后期运用了很多伪类元 ...

  7. html before边距,CSS中的before和:after伪元素使用详解

    如果你一直密切关注着各种网页设计的博客,你可能已经注意到了:before和:after伪元素已经在前端开发中获得了相当多的关注.特别是在Nicolas Gallagher的博客中,后期运用了很多伪类元 ...

  8. ICCV2021 Oral SimROD:简单高效的数据增强!华为提出了一种简单的鲁棒目标检测自适应方法...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨小马 来源丨我爱计算机视觉 ▊ 写在前面 本文提出了一种简单有效的鲁棒目标检测无监督自适应方法( ...

  9. Hadoop学习之以伪分布模式部署Hadoop及常见问题

    Hadoop既可以以单机模式运行,也可以以伪分布模式运行,这两种模式都是为了使用者方便学习和调试Hadoop,要想发挥Hadoop分布式.并行处理的优势,还须以分布式模式来部署运行Hadoop.单机模 ...

最新文章

  1. 反向词典_根据描述查找词语
  2. Maven中mirrors和repository的关系
  3. 【Unity】publishing setting keystore作用
  4. java 替换四个字节的字符 '\xF0\x9F\x98\x84\xF0\x9F)的解决方案
  5. Java 8 简明教程
  6. python练习笔记——分解质因数
  7. 关于javascript dom扩展:Selector API
  8. 新媒体运营的“钱途”在哪里?
  9. 如何在iOS和WatchKit中更改图像tintColor
  10. C++函数重载与引用的较好的练习实例
  11. Linux系统中运行jar包的四种方式
  12. mysql批量插入数据
  13. 基于python版本的谷歌GEE云计算平台使用,以DEM数据下载为例(GEE系列1)
  14. Junit 5 实现testsuite
  15. angular整合环信webIM
  16. 小程序性能和体验优化方法
  17. java 微信公众号发红包,Java微信支付-微信红包
  18. 数字藏品的价值是什么?
  19. 安装银河麒麟系统失败是什么原因
  20. PHP支付宝转账到支付宝账号/支付(公钥证书方式)

热门文章

  1. 熊海博客php版本,xhcms_v1.0 熊海CMS是由熊海开发的一款可广泛应用于个人博客 联合开发网 - pudn.com...
  2. Go-fastdfs分布式文件系统搭建
  3. linux查看接口的命令,linux shell命令查看接口索引--ip link show
  4. C++设计模式之Singleton模式(单例模式)
  5. tf.train.slice_input_producer(转)
  6. rsync java_Linux 同步工具rsync学习
  7. 循环控制语句转换为汇编
  8. Cocos2d Box2D之浮动刚体
  9. Gulp解决发布线上文件(CSS和JS)缓存问题
  10. oracle11g ADR 位置