在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 ...