什么是线性同余法c语言,C语言线性同余法产生随机数
線性同余法產生隨機數序列的公式為:x[k+1] = (a*x[k] + c) % m參數 a, c, m 都是由用戶來設定的,并和一個種子數(例如 x[0])一起作為命令行參數傳遞給生成的程序。一個簡單的例子:a=7, c=1, m=13, and seed=5一個復雜的例子:a=69069, c=0, m=2^32=4294967296, seed=31下面的代碼將輸出一個隨機數序列(最多有 m-1 個不同的值),然后繼續循環。#include
#include
#include
#include
static long seed = 13;
static long a;
static long c;
static long m;
void random_init(long s) {
if (s != 0) seed = s;
}
long random() {
seed = (a*seed + c)%m;
return seed;
}
int main(int argc, char * argv[]) {
long s;
int k;
if (argc != 5) {
printf("usage: %s a, c, m, seed\n", argv[0]);
return 1;
}
a = atoi(argv[1]);
c = atoi(argv[2]);
m = atoi(argv[3]);
s = atoi(argv[4]);
random_init(s);
for (k = 0; k < m-1; k++) {
printf("%8ld", random());
if (k % 8 == 7) { ?// 輸出 8 個數字以后換行
printf("\n");
Sleep(1); ?// 暫停 1 秒
}
}
printf("\n");
return 0;
}
構建成功后,需要到命令行(cmd.exe)運行該程序才能看到效果。這里涉及到 main() 函數的傳參問題.
比如,我的項目放在 E:\cDemo\ 目錄下,在命令行中的輸入截圖如下:
注意:輸入的參數個數(cDemo.exe也算一個參數)必須等于 5 程序才能正確執行。上面的截圖中,我給 m 傳的值為 56,產生了 55( m-1 ) 個隨機數。
總結
以上是生活随笔為你收集整理的什么是线性同余法c语言,C语言线性同余法产生随机数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python中利用scipy库进行最小二
- 下一篇: 【音乐理论】音与音高 ( 音 | 乐音体