#include
#include
#include
// 乙個隨機數生成函式
// 此函式不是基於用線性同餘法(標準庫中的rand()基於此方法),
// 而是以乙個knuth提出的相減方法為基礎,速度比標準庫中的rand()要快,但不標準。
staticlongg_next = -1
;//設定seed為任意負數值作為種子。
voidrandomseed(longseed)
//返回0.0~1.0之間的隨機數,設定idum為任意負數值
floatrandomunit()
for(k=0
; k<4
; ++k)
for(i=1
; i<=55
; ++i)
next = 0
;nextp = 31
;g_next = 1;}
//除初始化外,在此處開始
if(++next == 56
) next = 1
;if(++nextp == 56
) nextp = 1
;mj = ma[next]-ma[nextp];
if(mj <int(mz)) mj += mbig;
ma[next] = mj;
returnmj*fac;
}intrandom(intlow,inthigh)
// 測試
intmain()
// 生成,將輸出重定向到乙個.pbm檔案即可
printf("p1
/n128 128/n"
);for(i=0
;i<128
;i++)
printf("/n"
);}return0;}
利用隨機函式生成隨機數
給定乙個rand 可以產生從0到rand max的隨機數,其中 rand max 很大 常見值 16位int能表示的最大整數32767 寫出利用rand 生成 a,b 中任意整數的函式,其中a 0,b rand max,且b a 分析 這是在程式設計工作最常見的隨機函式的應用,在這裡做乙個起點再合適...
乙個偽隨機數生成演算法
乙個偽隨機數生成演算法 這幾天逛程式設計師論壇,發現了不少好帖子,增長了不少知識,現拿其中一則為例說明。某人提出乙個問題,說怎麼樣能生成一億個不重複的隨機數呢?問題表述起來很簡單,似乎只要弄明白什麼叫隨機數以及怎樣用電腦生成隨機數,就能解決問題了。這倆問題大多數程式設計師都會,我在這裡再表述一番。隨...
乙個偽隨機數生成演算法
這幾天逛程式設計師論壇,發現了不少好帖子,增長了不少知識,現拿其中一則為例說明。某人提出乙個問題,說怎麼樣能生成一億個不重複的隨機數呢?問題表述起來很簡單,似乎只要弄明白什麼叫隨機數以及怎樣用電腦生成隨機數,就能解決問題了。這倆問題大多數程式設計師都會,我在這裡再表述一番。隨機數,個人理解為一定範圍...