///////////////////////////////////////////// // // 一様乱数生成(Park and Miller) // ////////////////////////////////////////////// #include #define IA 16807 #define IM 2147483647 #define AM (1.0/IM) #define IQ 127773 #define IR 2836 #define MASK 123459876 double random(int *idum) { int k; double ans; k=(*idum)/IQ; (*idum)=IA*((*idum)-k*IQ)-IR*k; if((*idum) < 0) (*idum) += IM; ans=AM*(*idum); return ans; }