■
乗算合同法についてのサンプルプログラム1。
適当。
<プログラムリスト>
//multiplicative congruential method //jrand #include<stdio.h> #include<math.h> int main(void){ int set_n=50; //数列nの初期値 int set_b=17; //周期の初期値b int cnt; //カウンタ用の変数cnt int max_cnt=20; //出力最大数 double x; int a=363; int m=pow(2,set_b); if(max_cnt>pow(2,set_b -2)){ fprintf(stderr,"設定値が大きすぎます\n"); return -1; } for(cnt=1;cnt<=max_cnt;cnt++){ x=(double)set_n/m; printf("%f\n",x); set_n=(set_n*a) % m; } return 0; }
混合合同法のサンプルプログラム1
//mixed congruential method //krand #include<stdio.h> int main(void){ int set_n=3; //数列nの初期値 int set_b=5; //周期の初期値b int a=5; //1 mod 4 int c=3; //cとmは互いに素 int cnt; //カウンタ用の変数cnt int m=pow(2,set_b); int max_cnt=20; if(max_cnt>m){ fprintf(stderr,"設定値が大きすぎます\n"); } return -1; } for(cnt=1;cnt<=max_cnt;cnt++){ printf("%f\n",(double)set_n/m); } set_n=(set_n*a+c) % m; } return 0; }