c语言中如何得到服从正态分布的随机数?
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/10 16:47:08
c语言中如何得到服从正态分布的随机数?
生成大量的随机数,使之在一定的范围内(比如1~100),并且向某个值周围集中(比如30),最好能够自己设定集中程度高低
自己找正态分布图看看,我想要左右不对称也可以的.
第二个答案的程序是在什么编译环境里运行的?好使的话再给加分
生成大量的随机数,使之在一定的范围内(比如1~100),并且向某个值周围集中(比如30),最好能够自己设定集中程度高低
自己找正态分布图看看,我想要左右不对称也可以的.
第二个答案的程序是在什么编译环境里运行的?好使的话再给加分
用boost的random库方便生成,以下是2个测试,分别生成50个数:
// μ = 30,δ^2 = 4
30.84 30.00 26.61 27.49 31.27
29.74 27.99 29.81 29.73 33.29
32.17 31.37 26.83 28.20 27.99
28.69 34.66 25.44 29.22 24.84
29.39 32.02 32.35 28.28 34.16
27.04 32.02 33.40 31.39 29.08
31.91 29.19 29.14 32.25 27.20
32.16 29.06 27.67 29.26 29.51
28.36 28.65 26.87 27.74 26.56
30.16 31.18 30.57 30.57 33.43
// μ = 30,δ^2 = 100
84.66 61.85 24.17 68.63 2.15
1.30 40.92 72.74 74.83 4.25
39.86 27.06 60.94 50.58 79.35
51.83 86.03 74.75 92.33 70.59
93.43 55.51 57.22 70.48 70.52
1.45 22.55 40.85 33.23 65.39
35.54 89.69 45.87 88.35 40.73
67.31 17.64 23.98 98.43 35.93
97.88 48.95 59.54 13.14 45.79
5.55 8.77 70.31 14.83 82.54
#include
#include
using namespace std;
typedef boost::minstd_rand GenType;
typedef boost::normal_distribution NormalDis;
typedef boost::variate_generator RNG;
void Show(RNG& rng)
{
cout.setf(ios_base::fixed);
cout.precision(2);
for(int i = 0; i < 50;)
{
double temp = rng();
if(temp >= 1 && temp
// μ = 30,δ^2 = 4
30.84 30.00 26.61 27.49 31.27
29.74 27.99 29.81 29.73 33.29
32.17 31.37 26.83 28.20 27.99
28.69 34.66 25.44 29.22 24.84
29.39 32.02 32.35 28.28 34.16
27.04 32.02 33.40 31.39 29.08
31.91 29.19 29.14 32.25 27.20
32.16 29.06 27.67 29.26 29.51
28.36 28.65 26.87 27.74 26.56
30.16 31.18 30.57 30.57 33.43
// μ = 30,δ^2 = 100
84.66 61.85 24.17 68.63 2.15
1.30 40.92 72.74 74.83 4.25
39.86 27.06 60.94 50.58 79.35
51.83 86.03 74.75 92.33 70.59
93.43 55.51 57.22 70.48 70.52
1.45 22.55 40.85 33.23 65.39
35.54 89.69 45.87 88.35 40.73
67.31 17.64 23.98 98.43 35.93
97.88 48.95 59.54 13.14 45.79
5.55 8.77 70.31 14.83 82.54
#include
#include
using namespace std;
typedef boost::minstd_rand GenType;
typedef boost::normal_distribution NormalDis;
typedef boost::variate_generator RNG;
void Show(RNG& rng)
{
cout.setf(ios_base::fixed);
cout.precision(2);
for(int i = 0; i < 50;)
{
double temp = rng();
if(temp >= 1 && temp