rand的產生的隨機數不大與0x7ff

2021-08-04 07:18:28 字數 399 閱讀 4367

最大32767 (2^16-1)。

系統裡的隨機數是利用初等數論中的同餘定理來實現的.

整數rand的原理是:

y=ax+b(mod n)其中,n一般是乙個很大的素數,幾萬。

a也是大素數。而且a,b,n都是常數。所以rand的產生決定於x,

他被稱為seed。

每乙個seed都是上一次產生的y的函式。這樣,如果直接取seed=y的話,

雖然產生的rand之間相關性甚小,但只要知道某個y,就能推知以後的rand。

為避免這種情況,一般取seed為y和當時計算機的時間的函式,如seed=y+t

比如vc中對於rand()函式是如下實現的.

int __cdecl rand (void)

rand 和 srand產生隨機數

在c語言中,rand 函式可以用來產生隨機數,但是這不是真真意義上的隨機數,是 乙個偽隨機數,是根據乙個數,我們可以稱它為種子,為基準以某個遞推公式推算出來的一係數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機 數,但這不是真正的隨機數,當計算機正常開機後,這個種子的值是定了的,除非你...

C語言rand 函式產生隨機數

include include int main 產生1 6之間的隨機數 執行結果 函式一 int rand void 返回乙個 0,rand max 間的隨機整數。函式二 void srand unsigned seed 引數seed是srand 的種子,用來初始化srand 的起始值。系統在呼叫...

rand 和srand 產生偽隨機數

標準庫 被包含於 中 提供兩個幫助生成偽隨機數的函式 函式一 int rand void 從srand seed 中指定的seed開始,返回乙個 seed,rand max 0x7fff 間的隨機整數。函式二 void srand unsigned seed 引數seed是rand 的種子,用來初始...