正态分布随机数算法

来源:互联网 发布:gina windows界面设计 编辑:程序博客网 时间:2024/06/07 22:24
// RandZT.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <IOSTREAM>#include <STDIO.H>#include <STDLIB.H>#include <CTIME>using namespace std;// [0,1]均匀分布的随机数double Rand01(double *r){double base, u, v, p, temp1, temp2,temp3;base = 256.0;u = 17.0;v = 139.0;temp1 = u * (*r) + v;temp2 = (int)(temp1 / base);temp3 = temp1 - temp2 * base;*r = temp3;p = *r / base;return p;}double RandZT(double u, double t, double *r){int i;double total = 0;double result;for (i= 0; i < 12; i++){total += Rand01(r);}result = u + t *(total - 0.6);return result;}int main(int argc, char* argv[]){int i;double r,u,t;r= 5.0;u = 2.0;t =3.5;cout<<"10 正态分布随机数: "<<endl;for (i = 0; i < 10; i++){printf("%10.5lf%\n", RandZT(u,t,&r));}printf("\n");return 0;}/*10 正态分布随机数:19.4507820.1070324.2632824.9195315.0757819.2320323.3882817.0445321.2007825.35703  Press any key to continue*/