数字信号产生之正态分布的随机数
2013-09-03 10:39
369 查看
uniform.h
#pragma once
class uniform
{
private:
double a, b, generate_num;
long * seed;
long s;
int M, N, i, j;
public:
uniform()
{
M = 1048576;
N = 2045;
}
void generate();
double random_number(double, double, long *);
};
double uniform::random_number(double a, double b, long * seed)
{
(*seed) = N * (*seed) + 1;
(*seed) = (*seed) - ((*seed) / M) * M;
generate_num = static_cast<double>((*seed)) / M;
generate_num = a + (b - a) * generate_num;
return (generate_num);
}
gauss.h
#pragma once
#include "uniform.h"
uniform unif_num;
class gauss
{
private:
double mean, sigma, x, y, generate_num;
long s;
long * seed;
int i, j, m;
public:
gauss() {}
void generate();
double random_number(double, double, long *);
};
double gauss::random_number(double mean, double sigma, long * seed)
{
x = 0;
for (m = 0; m < 12; m++)
{
x += unif_num.random_number(0.0, 1.0, seed);
}
x = x - 6.0;
y = mean + x * sigma;
return (y);
}
gauss.cpp
//产生50个均值为0、方差为1的正态分布的随机数
#include <iostream>
#include "gauss.h"
#include <iomanip>
using namespace std;
void main()
{
gauss solution;
solution.generate();
}
void gauss::generate()
{
cout << "输入正态分布的均值:";
cin >> mean;
cout << "输入正态分布的均方差:";
cin >> sigma;
cout << "输入随机数的种子:";
cin >> s;
cout << "随机数生成结果为:" << endl;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 5; j++)
{
generate_num = random_number(mean, sigma, &s);
cout << setw(10) << generate_num;
}
cout << endl;
}
}
#pragma once
class uniform
{
private:
double a, b, generate_num;
long * seed;
long s;
int M, N, i, j;
public:
uniform()
{
M = 1048576;
N = 2045;
}
void generate();
double random_number(double, double, long *);
};
double uniform::random_number(double a, double b, long * seed)
{
(*seed) = N * (*seed) + 1;
(*seed) = (*seed) - ((*seed) / M) * M;
generate_num = static_cast<double>((*seed)) / M;
generate_num = a + (b - a) * generate_num;
return (generate_num);
}
gauss.h
#pragma once
#include "uniform.h"
uniform unif_num;
class gauss
{
private:
double mean, sigma, x, y, generate_num;
long s;
long * seed;
int i, j, m;
public:
gauss() {}
void generate();
double random_number(double, double, long *);
};
double gauss::random_number(double mean, double sigma, long * seed)
{
x = 0;
for (m = 0; m < 12; m++)
{
x += unif_num.random_number(0.0, 1.0, seed);
}
x = x - 6.0;
y = mean + x * sigma;
return (y);
}
gauss.cpp
//产生50个均值为0、方差为1的正态分布的随机数
#include <iostream>
#include "gauss.h"
#include <iomanip>
using namespace std;
void main()
{
gauss solution;
solution.generate();
}
void gauss::generate()
{
cout << "输入正态分布的均值:";
cin >> mean;
cout << "输入正态分布的均方差:";
cin >> sigma;
cout << "输入随机数的种子:";
cin >> s;
cout << "随机数生成结果为:" << endl;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 5; j++)
{
generate_num = random_number(mean, sigma, &s);
cout << setw(10) << generate_num;
}
cout << endl;
}
}
相关文章推荐
- 数字信号产生之瑞利分布的随机数
- 数字信号产生之对数正态分布的随机数
- 数字信号产生之柯西分布的随机数
- 数字信号产生之艾尔朗分布的随机数
- 数字信号产生之贝努里分布的随机数
- 数字信号产生之韦伯分布的随机数
- 数字信号产生之贝努里高斯分布的随机数
- 数字信号产生之二项分布的随机数
- 数字信号产生之泊松分布的随机数
- 数字信号产生之均匀分布的随机数
- 数字信号产生之指数分布的随机数
- 数字信号产生之拉普拉斯分布的随机数
- php产生数字,大小写字母组成的随机数
- 用SQL产生一串5位数字的随机数
- 字符串转数字|continue|三元表达式|随机数产生|枚举|结构体
- 任意数字大小写字母的随机数的产生
- randn:产生正态分布的随机数或矩阵的函数
- 产生满足正态分布的随机数
- Python使用numpy产生正态分布随机数的向量或矩阵操作示例
- C语言产生满足正态分布的随机数