⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tryrand2.cpp

📁 随机数生成程序
💻 CPP
字号:
#define WANT_STREAM#include "include.h"#include "newran.h"#ifdef use_namespaceusing namespace NEWRAN;#endifvoid Histogram(Random*, int);          // draw histogram with n obsvvoid test2(int n){   {      Uniform u;      SumRandom sr1 = -u;      SumRandom sr2 = 5.0-u;      SumRandom sr3 = 5.0-2*u;      MixedRandom sr4 = u(0.5) + (-u)(0.5);      Histogram(&sr1,n);      cout << "Mean and variance should be -0.5 and 0.083333" << endl;      Histogram(&sr2,n);      cout << "Mean and variance should be 4.5 and 0.083333" << endl;      Histogram(&sr3,n);      cout << "Mean and variance should be 4.0 and 0.33333" << endl;      Histogram(&sr4,n);      cout << "Mean and variance should be 0.0 and 0.33333" << endl;   }   {      Uniform u;      SumRandom sr1 = u*u;      SumRandom sr2 = (u-0.5)*(u-0.5);      Histogram(&sr1,n);      cout << "Mean and variance should be 0.25 and 0.048611" << endl;      Histogram(&sr2,n);      cout << "Mean and variance should be 0.0 and 0.006944" << endl;   }   {      static Real probs[]={.4,.2,.4};      DiscreteGen discrete(3,probs); Normal nn;      SumRandom sr=discrete+(nn*0.25)(2)+10.0;      Histogram(&discrete,n);      Histogram(&sr,n);   }   {      static Real probs[]={.2,.8};      Random* rv[2];      Normal nn; SumRandom snn=nn*10.0;      rv[0]=&snn; rv[1]=&nn;      MixedRandom mr(2,probs,rv);      MixedRandom mr2=snn(.2)+nn(.8);      Histogram(&mr2,n);      Histogram(&mr,n);   }   {      Normal nn; Constant c1(0.0); Constant c2(10.0);      MixedRandom mr=c1(0.25)+(nn+5.0)(0.5)+c2(0.25);      Histogram(&mr,n);   }   {      Cauchy cy; Normal nn; SumRandom sr = cy*.01+nn+2.0;      MixedRandom mr=sr(0.1)+nn(0.9);      Histogram(&sr,n);      Histogram(&mr,n);   }   {      Constant c0(0.0); Constant c1(1.0); Constant c2(2.0);      Constant c3(3.0); Constant c4(4.0); Constant c5(5.0);      MixedRandom mr=c0(.1)+c1(.2)+c2(.2)+c3(.2)+c4(.2)+c5(.1);      Histogram(&mr,n);   }   {      Uniform u; Normal nl;      MixedRandom m=( u(3)-1.5 )(0.5)+( nl*0.5+10.0 )(0.5);      Histogram(&m,n);   }   {      Real prob[] = { .25, .25, .25, .25 };      Real val[] = { 3, 1.5, 1, 0.75 };      DiscreteGen X(4, prob, val);      SumRandom Y = 1/X;      Histogram(&Y,n);  // mean should be 0.83333, variance should be 0.13889      cout << "Mean and variance should be 0.83333 and 0.13889" << endl;      Uniform U;      SumRandom Z = U/X;      Histogram(&Z,n);  // mean should be 0.41667, variance should be 0.10417      cout << "Mean and variance should be 0.41667 and 0.10417" << endl;   }   {      int M = 5, N = 9;      ChiSq Num(M); ChiSq Den(N);      SumRandom F = (double)N/(double)M * Num / Den;      Histogram(&F,n);      cout << "Mean and variance should be " << N / (double)(N-2)         << " and "         << 2 * N * N * (M+N-2) / (double)(M * (N-2) * (N-2) * (N-4))         << endl;   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -