/*32位随机数生成器U(0,1):MRG32k3a作者:Pierre L'Ecuyer,来源:组合多重递归随机的良好参数集数字生成器,运筹学中的较短版本,47, 1 (1999), 159--164.---------------------------------------------------------*/#包括“MRG32k3a.h”#定义规范2.328306549295728e-10#定义m1 4294967087.0#定义m2 4294944443.0#定义a12 1403580.0#定义a13n 810728.0#定义a21 527612.0#定义a23n 1370589.0/***s10、s11、s12的种子必须是[0,m1-1]中的整数,而不是全部为0。s20、s21、s22的种子必须是[0,m2-1]中的整数,而不是全部为0。***/#定义SEED 12345静态双s10=SEED,s11=SEED、s12=SEED,s20=种子,s21=种子,s22=种子;双MRG32k3a(无效){长k;双p1,p2;/*第1部分*/p1=a12*s11-a13n*s10;k=p1/m1;p1-=k*m1;如果(p1<0.0)p1+=m1;s10=s11;s11=s12;s12=p1;/*第2部分*/p2=a21*s22-a23n*s20;k=p2/m2;p2-=k*m2;如果(p2<0.0)p2+=平方米;s20=s21;s21=s22;s22=p2;/*组合*/如果(p1<=p2)返回((p1-p2+m1)*范数);其他的返回((p1-p2)*范数);}