📄 ran0.cpp
字号:
#define IA 16807#define IM 2147483647#define AM (1.0/IM)#define IQ 127773#define IR 2836#define MASK 123459876float ran0(long &idum)// "Minimal" random number generator of Park and Miller with// Bays-Durham shuffle and added safeguards. Returns a uniform random// deviate between 0.0 and 1.0. Set or reset idum to any integer value// (except the unlikely value MASK) to initialize the sequence; idum// must not be altered between calls for successive deviates in a sequence. { long k; float ans; idum ^= MASK; // XORing with MASK allows use of 0 and k = idum/IQ; // other simple bit patterns for idum. idum = IA * (idum-k*IQ) - IR*k; // Compute idum = (IA*idum) % IM without if (idum < 0) idum += IM; // overflows by Schrage's method. ans = AM * idum; // Convert idum to a floating result. idum ^= MASK; // Unmask before return. return ans;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -