日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

什么是线性同余法c语言,C语言线性同余法产生随机数

發(fā)布時間:2024/8/1 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是线性同余法c语言,C语言线性同余法产生随机数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

線性同余法產(chǎn)生隨機數(shù)序列的公式為:x[k+1] = (a*x[k] + c) % m參數(shù) a, c, m 都是由用戶來設定的,并和一個種子數(shù)(例如 x[0])一起作為命令行參數(shù)傳遞給生成的程序。一個簡單的例子:a=7, c=1, m=13, and seed=5一個復雜的例子:a=69069, c=0, m=2^32=4294967296, seed=31下面的代碼將輸出一個隨機數(shù)序列(最多有 m-1 個不同的值),然后繼續(xù)循環(huán)。#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 個數(shù)字以后換行

printf("\n");

Sleep(1); ?// 暫停 1 秒

}

}

printf("\n");

return 0;

}

構(gòu)建成功后,需要到命令行(cmd.exe)運行該程序才能看到效果。這里涉及到 main() 函數(shù)的傳參問題.

比如,我的項目放在 E:\cDemo\ 目錄下,在命令行中的輸入截圖如下:

注意:輸入的參數(shù)個數(shù)(cDemo.exe也算一個參數(shù))必須等于 5 程序才能正確執(zhí)行。上面的截圖中,我給 m 傳的值為 56,產(chǎn)生了 55( m-1 ) 個隨機數(shù)。

總結(jié)

以上是生活随笔為你收集整理的什么是线性同余法c语言,C语言线性同余法产生随机数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。