C++:随机数 正态分布(norm distribution) 详解

正态分布(norm distribution), 做为一种重要的分布规律, 有广泛的用途;

注意正态分布包含两个参数, 均值(mean) 和标准差(standard deviation);

随机库(#include <random>), 包含正态分布对象, norm_distribution<>, 可以用于生成正态分布;

代码如下:

#include <iostream>
#include <vector>
#include <string>
#include <random>
#include <algorithm>
#include <cmath>  

using namespace std;  

int main()
{
    std::default_random_engine e; //引擎
    std::normal_distribution<double> n(4, 1.5); //均值, 方差
    std::vector<unsigned> vals(9);
    for(std::size_t i=0; i != 200; ++i) {
        unsigned v = std::lround(n(e)); //取整-最近的整数
        if (v < vals.size())
            ++vals[v];
    }
    for (std::size_t j=0; j != vals.size(); ++j)
        std::cout << j << " : " << vals[j] << std::string(vals[j], '*') << std::endl;  

    int sum = std::accumulate(vals.begin(), vals.end(), 0);
    std::cout << "sum = " << sum << std::endl;
    return 0;
}

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/cplus/

输出:

0 : 3***
1 : 8********
2 : 20********************
3 : 38**************************************
4 : 58**********************************************************
5 : 42******************************************
6 : 23***********************
7 : 7*******
8 : 1*
sum = 200

作者:csdn博客 Spike_King

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c++
, include
, 均值
, 正态分布
, 方差
, std
, c++随机数
, 正态随机分布
, C++生成随机数
C++随机数生成
norm distribution、normdist函数使用详解、正态分布详解、c norm、c norm函数,以便于您获取更多的相关知识。

时间: 2024-08-04 08:52:44

C++:随机数 正态分布(norm distribution) 详解的相关文章

C++:随机数生成器(random-number generator) 详解

随机数, C语言的函数是rand(), C++则是随机数生成器(random-number generator) = 分布对象(distribution object) + 引擎(engine); 使函数每次生成不同的随机数, 需要使用静态(static)局部变量, 这样分布对象和引擎就能保持(hold)状态(state), 每次都生成一个新的; 生成随机的整数, 使用分布对象uniform_int_distribution<>, 默认模板参数是int; 生成随机的浮点数, 使用分布对象uni

C++:随机生成器 伯努利分布(bernoulli distribution) 详解

伯努利分布(bernoulli distribution), 是判断某件事情发生或者未发生的概率; 给定参数p, 可以修改概率的值, 发生概率(true)是p,未发生概率(false)是1-p; 随机库, 提供分布对象bernoulli_distribution, 输出bool值, 发生为true, 未发生为false; 伯努利分布, 概率为0.5时, 可以等概率输出一个二元事件, 如先后顺序; 注意: 引擎和分布对象, 声明在函数外, 则每次调用, 都会产生不同的值, 但却是固定的, 可以使用

详解js数组的完全随机排列算法_javascript技巧

Array.prototype.sort 方法被许多 JavaScript 程序员误用来随机排列数组.最近做的前端星计划挑战项目中,一道实现 blackjack 游戏的问题,就发现很多同学使用了 Array.prototype.sort 来洗牌. 洗牌 以下就是常见的完全错误的随机排列算法: function shuffle(arr){ return arr.sort(function(){ return Math.random() - 0.5; }); } 以上代码看似巧妙利用了 Array.

PHP的伪随机数与真随机数详解

  这篇文章主要介绍了PHP的伪随机数与真随机数详解,本文首先讲解了真随机数和伪随机数的相关概念,并给出了比用mt_rand()函数产生更好的伪随机数的一段例子代码,需要的朋友可以参考下 首先需要声明的是,计算机不会产生绝对随机的随机数,计算机只能产生"伪随机数".其实绝对随机的随机数只是一种理想的随机数,即使计算机怎样发展,它也不会产生一串绝对随机的随机数.计算机只能生成相对的随机数,即伪随机数. 伪随机数并不是假随机数,这里的"伪"是有规律的意思,就是计算机产生

Qt定时器和随机数详解_C 语言

环境是:Windows 7 + Qt 4.8.1 +Qt Creator 2.4.1 一.定时器 Qt中有两种方法来使用定时器,一种是定时器事件,另一种是使用信号和槽.一般使用了多个定时器时最好使用定时器事件来处理. 1.新建Qt Gui应用,项目名称为myTimer,基类选择QWidget,类名为Widget. 2.到widget.h文件中添加函数声明: protected:     void timerEvent(QTimerEvent *); 然后添加私有变量定义: int id1, id

JS产生随机数的几个用法详解_javascript技巧

JS产生随机数的几个用法详解 <script> function GetRandomNum(Min,Max) { var Range = Max - Min; var Rand = Math.random(); return(Min + Math.round(Rand * Range)); } var num = GetRandomNum(1,10); alert(num); </script> var chars = ['0','1','2','3','4','5','6','7

JS生成某个范围的随机数【四种情况详解】_javascript技巧

前言: JS没有现成的函数,能够直接生成指定范围的随机数. 但是它有个函数:Math.random()  这个函数可以生成 [0,1) 的一个随机数. 利用它,我们就可以生成指定范围内的随机数. 而涉及范围的话,就有个边界值的问题.这样就包含四种情况: 1)min ≤ r ≤ max  (一般这种比较常见) 2)min ≤ r < max 3) min < r ≤ max 4)min < r < max 一.min ≤ r ≤ max function RandomNumBoth(

ASP常见数学函数 Abs Atn Cos 等详细详解

[名称] Abs [类别] 数学函数 [原形] Abs(number) [参数] 必选的.Number参数是一个任何有效的数值型表达式 [返回值] 同 number 的类型 [异常/错误] 无 [描述] 返回参数number 的绝对值.一个数的绝对值是将正负号去掉以后的值.例如,ABS(-1) 和 ABS(1) 都返回 1.Abs(5.2)=5.2,Abs(-5)=5 [示例] Dim MyNumber MyNumber = Abs(50.3) ' 返回 50.3. MyNumber = Abs

ASP的函数详解-2

函数|详解 LCase() FUNCTION: 返回字符串的小写形式 SYNTAX: Lcase(string) ARGUMENTS: string is any valid string expression. EXAMPLE: <% strTest = "This is a test!" response.write LCase(strTest) %> RESULT: this is a test! Left() FUNCTION: 返回字符串左边第length个字符以