日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++语言生成一个随机数,C/C++怎么生成“真正的”随机数

發布時間:2025/4/16 c/c++ 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++语言生成一个随机数,C/C++怎么生成“真正的”随机数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C/C++怎么生成“真正的”隨機數

C語言中,直接用rand()函數生成隨機數的話,會出現一個尷尬的局面,那就是每次運行都會生成相同的一個數,這顯然不能滿足我們的期望。怎么回事呢?

不管從哲學上說,還是從技術上說,都難以生成絕對隨機的隨機數,但是我們可以盡可能讓那些“偽隨機數”更像是“真正的”隨機數。

先認識srand()

srand()是隨機數發生器的初始化函數。原型函數是srand(unsigned int seed),通過參數seed改變系統提供的種子值。常用的srand((unsigned)time(NULL))就是根據系統的計時器來改變種子值,time(NULL)是用一套預先設定好的算法計算出的隨機數,會隨著時間變化。

為了清晰地看到seed的值隨時間變化的情形,設計了下面幾行代碼。編譯后多次運行,每次都能輸出一個不同的值。

#include#includeusing namespace std;

int main()

{

int s=(unsigned)time(NULL);

cout<

再說說seed

系統調用rand()之前會先調用srand(),看用戶有沒有給seed一個指定的值。如果有,就用這個值作為產生偽隨機數的初始值,如果沒有,就會用一個固定不變的數作為初始值(這個值與系統有關)。

這就解釋了為什么不用srand()給初始值,或是用了srand()但是給一個定值會導致隨機數不變的問題。簡單的說,只有種子的值變了,隨機數才有可能變化。

回歸正題

現在,我們貌似能夠生成幾個像樣的隨機數了。

#include#include#include#includeusing namespace std;

int main()

{

int a=1,b=50;

srand((unsigned)time(NULL));

for(int i=1;i<=10;++i)

{

int n=a+rand()%(b-a+1);

cout<

上面的代碼將生成十個1到50之間的整數隨機數。

注:怎么讓rand()生成一定范圍內的隨機整數?

簡單說,要生成a到b之間的整數(包含a和b),用a+rand%(b-a+1)就好了。

通俗說,a告訴系統該從哪里開始找隨機數,而b-a+1則表示備選范圍中一共有多少個整數。

結語

我是個初學者。過去是,現在是,以后還是。

博客有兩個目的,一是備忘,雖然是些基礎的知識(或是常識),仍然值得回味。二是因為我的水平較低,想多和大家交流,探討,提升自己的水平。

原創文章,請尊重版權。

總結

以上是生活随笔為你收集整理的c++语言生成一个随机数,C/C++怎么生成“真正的”随机数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。