乙個隨機數生成函式

2021-05-24 04:52:12 字數 1201 閱讀 2196

#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 分析 這是在程式設計工作最常見的隨機函式的應用,在這裡做乙個起點再合適...

乙個偽隨機數生成演算法

乙個偽隨機數生成演算法 這幾天逛程式設計師論壇,發現了不少好帖子,增長了不少知識,現拿其中一則為例說明。某人提出乙個問題,說怎麼樣能生成一億個不重複的隨機數呢?問題表述起來很簡單,似乎只要弄明白什麼叫隨機數以及怎樣用電腦生成隨機數,就能解決問題了。這倆問題大多數程式設計師都會,我在這裡再表述一番。隨...

乙個偽隨機數生成演算法

這幾天逛程式設計師論壇,發現了不少好帖子,增長了不少知識,現拿其中一則為例說明。某人提出乙個問題,說怎麼樣能生成一億個不重複的隨機數呢?問題表述起來很簡單,似乎只要弄明白什麼叫隨機數以及怎樣用電腦生成隨機數,就能解決問題了。這倆問題大多數程式設計師都會,我在這裡再表述一番。隨機數,個人理解為一定範圍...