仅提供给宏作者生成随机数使用
使用方法:主宏中添加
/macro random
语句,即可得到
v_rand0和v_rand1共2个范围为0~714024的随机数
以及由v_mod0和v_mod1控制范围的随机数v_ra0和v_ra1
例如在主宏中设置需要的随机数范围
/var [20] v_mod0
即可得到一个范围为1~20的随机数v_ra0
当没有设置v_mod0,或者不是2~714024之间的整数时,则v_ra0范围为1~100
注意,线性同余算法的随机性是跟参数a、c、m有关的,评价随机性是有专门的理论的。宏里的参数根据超级宏14位有效数字选取了尽可能大的,请勿随意修改。
(:з X∠)_ 当然,你懂的话也可以直接把宏语句复制进你的宏来用
要测试的话,可以在主宏里/print [v_ra0]来测试
由于ping的加入,使得随机性不容置疑
<一定要点这复制宏代码>
#name random
301
/if [!v_bseed]
/var [count/ping%714025] v_rand0
/var [v_rand0-v_rand0%1] v_rand0
/var [true] v_bseed
/end
/var [(v_rand0*4096+150889)%714025] v_rand1
/var [(v_rand1*4096+150889)%714025] v_rand0
/if [!(1<v_mod0<714025)]
/var [100] v_mod0
/end
/if [!(1<v_mod1<714025)]
/var [100] v_mod1
/end
/var [v_rand0/714025*v_mod0-v_rand0/714025*v_mod0%1+1] v_ra0
/var [v_rand1/714025*v_mod1-v_rand1/714025*v_mod1%1+1] v_ra1