一、random函式不是ansi c標準,不能在gcc,vc等編譯器下編譯通過。 可改用c++下的rand函式來實現。
1、c++標準函式庫提供一隨機數生成器rand,返回0-rand_max之間均勻分布的偽隨機整數。 rand_max必須至少為32767。rand()函式不接受引數,預設以1為種子(即起始值)。 隨機數生成器總是以相同的種子開始,所以形成的偽隨機數列也相同,失去了隨機意義。(但這樣便於程式除錯)
2、c++中另一函式srand(),可以指定不同的數(無符號整數變元)為種子。但是如果種子相同,偽隨機數列也相同。乙個辦法是讓使用者輸入種子,但是仍然不理想。
3、 比較理想的是用變化的數,比如時間來作為隨機數生成器的種子。 time的值每時每刻都不同。所以種子不同,所以,產生的隨機數也不同。
// c++隨機函式(vc program)
#include
#include
#include
#define max 100
void main()
{ srand( (unsigned)time( null ) );//srand()函式產生乙個以當前時間開始的隨機種子
for (int i=0;i<10;i++)
cout<
注:rand()產生的是0 to rand_max (32767)上的隨機數,而32767不能被11整除。
因此 int n = rand() % 11; 得到的隨機數,並不是從0-10一致分布的取9,10的概率取0-8幾個數字的概率少了11/32767約為1/2978;
所以要取0~m的隨機數,若m較小時這樣作問題不大,但m較大時,例如m=30000,則取到0-2767的概率是取後面幾個數字的兩倍,嚴重不符合隨機分布!
C 中的隨機函式
一 random函式不是ansi c標準,不能在gcc,vc等編譯器下編譯通過。可改用c 下的rand函式來實現。1 c 標準函式庫提供一隨機數生成器rand,返回0 rand max之間均勻分布的偽隨機整數。rand max必須至少為32767。rand 函式不接受引數,預設以1為種子 即起始值 ...
c 中的隨機函式rand()
一 c 中不能使用random 函式 random 函式不是ansi c標準,不能在gcc,vc等編譯器下編譯通過。但在c語言中int random num 可以這樣使用,它返回的是0至num 1的乙個隨機數。可改用c 下的rand函式來實現。1 c 標準函式庫提供一隨機數生成器rand,返回0 r...
C 隨機函式
1.srand 和 rand 函式 rand 產生隨機數,一般是從srand seed 中指定的seed開始,返回乙個 seed,rand max 0x7fff 間的隨機整數。如果使用者在此之前沒有呼叫過srand seed 它會自動呼叫srand 1 一次。如果seed的值每次都一樣,那麼產生的隨...