[電腦漫談]偽隨機數產生方法

來源:互聯網
上載者:User

標籤:改變   沒有   int   define   cti   ati   測試   繼承   序列   

       大家好.今天說點兒關於程式設計過程中產生隨機數的方法.

       (一)JAVA偽隨機數產生方法

       隨機數在程式設計過程中,特別是在實踐環境類比和測試等領域中得到很廣泛的應用,我們在編程的過程中也時不時需要使用到隨機數.電腦中的隨機數,並不是真正的隨機數,而是叫做"偽隨機數",是電腦通過某種特別演算法類比產生的.

      在JAVA語言中,我們可以通過Math類的random方法產生區間[0,1)的隨機數,若要產生[a,a+b)之間的偽隨機數,可以通過語句 a + b * Math.random(); 來實現.該方法的方法簽名為:static double random();

      Math類位於java.lang包中,而java.lang包是預設包含的,因此不需要顯式使用 import java.lang.*; 語句.在API文檔中我們可以知道該類的繼承結構:

    可以知道,Math類是Obeject類的直接子類,而object類是所有其他類的直接或間接超類.Math類中聲明了許多與數學計算相關的實用成員變數和方法成員,如:

    static double E;   //自然對數的底數

    static double PI;  //顧名思義,圓周率π

    在程式中可以使用它們,來代替實用const double來定義變數.

    static double abs(double);  //求絕對值方法

    static double cos(double);  //餘弦函數,與此類似,還有正弦sin方法,正切tan方法等

    static double pow(double, double);  //冪函數

    static double sqrt(double); //開算術平方根

    ......

    

      (二)C/C++中偽隨機數產生方法

      在C/C++中沒有像JAVA中Math.random()這樣的方法(函數).使用的是標頭檔stdlib.h或cstdlib中的rand()函數.函數原型為:int rand(); ,產生一個0 ~ RAND_MAX之間的偽隨機整數.RAND_MAX定義在stdlib.h中,我機器上的MinGW編譯器的定義為:             #define RAND_MAX 0x7FFF

      若要產生(0,a)之間的隨機數,rand() % (a+1)即可;((double)rand()/RAND_MAX)*(b-a) + a, 產生區間[a,b]上的隨機數.

      但是,這樣產生的偽隨機數是一個固定的序列,當再一次使用rand()函數產生隨機數時,會產生和之前相同的值.改進方法是重新設定隨機數種子(預設為1).使用函數void srand (unsigned int)來設定隨機數種子,改變偽隨機數序列.

      為了是隨機數更加具有隨機性,通常使用標頭檔time.h中的time函數的傳回值作為隨機數種子,如srand((unsigned)time(0));

      範例程式碼如下:

 1 #include<iostream> 2 #include<cstdlib> 3 #include<ctime> 4  5 using namespace std; 6  7 int main(){ 8  9     srand((unsigned)time(0));10 11      for(int i = 0; i < 10 ;i++)12         cout<<10+rand()%21<<‘ ‘;   //10~30之間的隨機數13 14      return 0;15 }

 

 謝謝大家!轉載請註明出處,謝謝合作!

 

[電腦漫談]偽隨機數產生方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.