C語言隨機數

2021-08-04 12:28:32 字數 1047 閱讀 3036

在c語言函式庫中包含了乙個產生隨機數的函式: int rand( void ); 

函式返回的是乙個界於0~32767之間的偽隨機數,包括0和32767。注意,這裡產生的是偽隨機數,不是真正意義上的隨機數,看下面的程式: 

#include "stdlib.h" 

#include "stdio.h"  

void main(  ) 

執行結果: 346

多次執行這個程式,發現每次產生的結果都是346(不同的機器可能產生的結果不一樣),這就是所謂的偽隨機數。那麼,如何才能產生真正意義上的隨機數呢?這就有乙個隨機種子的問題。在c語言標準函式庫中,有這麼乙個函式:多次執行這個程式,發現每次產生的結果都是346(不同的機器可能產生的結果不一樣),這就是所謂的偽隨機數。那麼,如何才能產生真正意義上的隨機數呢?這就有乙個隨機種子的問題。在c語言標準函式庫中,有這麼乙個函式:多次執行這個程式,發現每次產生的結果都是346(不同的機器可能產生的結果不一樣),這就是所謂的偽隨機數。那麼,如何才能產生真正意義上的隨機數呢?這就有乙個隨機種子的問題。在c語言標準函式庫中,有這麼乙個函式:

void srand( unsigned int seed ); 

引數中的seed就是用來產生乙個隨機數系列的種子,預設值是1。所以,要產生真正意義上的隨機數,就要求每次提供的種子不一樣,一般情況下,都設定時間為隨機函式的種子。看下面的一段程式:

#include "stdlib.h" 

#include "stdio.h" 

#include "time.h" 

void main(   ) 

執行結果: 6929 8026 21987 30734 20587 6699 22034

25051 7988 10104 每次執行這個程式,產生的隨機數都不一樣,這樣就達到要求了。若要輸出1~10之間的隨機數,可將最後乙個printf中的rand()改為rand()%10+1

25051 7988 10104 

每次執行這個程式,產生的隨機數都不一樣,這樣就達到要求了。若要輸出1~10之間的隨機數,可將最後乙個printf中的rand()改為rand()%10+1

隨機數 C語言

怎樣獲得某一範圍的隨機整數?直接使用這種方法 rand n 試圖返回從0到n 1的整數 不好,因為許多隨機數生成器的低位並不隨機。乙個較好的方法是 int double rand double rand max 1 n 兩種方法都需要知道rand max,而且假設n要遠遠小於rand max。如果n...

c語言隨機數

隨機值函式rand 首先需要包含標頭檔案 include 計算機的優點是準確,並不擅長隨機和模擬,所以使用的rand 函式並不是真正意義上的隨機,而是一種偽隨機數使用rand 生成隨機數之前需要用隨機發生器的初始化函式srand unsigned seed 也位於stdlib.h 中 進行隨機數序列...

C語言產生隨機數

c語言產生隨機數需要呼叫stdlib.h標頭檔案中的兩個函式 int rand void 產生乙個0到rand max之間的隨機整數。rand max定義在stdlib.h,其值為2147483647 void srand int seed 用於初始化種子,便於每次產生不同的隨機數。include ...