rand 為啥每次生成的數都是一樣的

2021-07-30 00:25:35 字數 726 閱讀 2461

今天在執行乙個帶有rand()的程式的時候,想列印一下它的值,發現每一次列印都是41,第乙個數

原來rand()是計算機內的乙個生成偽隨機數的,生成的其實並不是隨機數,而是具有一定規律的遞推出來的數。

要在rand()前面加上sand(time(0)),不要忘記加上標頭檔案time.h,

sand(time(0))不能放在迴圈裡面寫

如果計算偽隨機序列的初始數值(稱為種子)相同,則計算出來的偽隨機序列就是完全相同的。這個特性被有的軟體利用於加密和解密。加密時,可以用某個種子數生成乙個偽隨機序列並對資料進行處理

每產生乙個隨機數之前,都呼叫一次srand,而由於計算機執行很快,所以你每次用time得到的時間都是一樣的(time的時間精度較低,只有55ms)。這樣相當於使用同乙個種子產生隨機序列,所以產生的隨機數總是相同的。應該把srand放在迴圈外

po上藍橋奪冠概率的**

#include#include#include#includeusing namespace std;

int main()

else

}} else if(randf%3==1)//ac

else//d win b

}} else //ad

else//b win c

}} }

printf("%f\n",win/100000.0);

return 0;

}

c 中rand 函式每次執行的結果都是一樣的嗎

include include void main int argc,char ar std cout x std endl 在vs2015下執行幾次都是相同的,ubuntu下g 的執行得到數值和vs2015不一樣,但也是每次執行結果相同。include include include intmai...

區間內的隨機數的生成 rand

採用了乙個例題,首先用隨機數的方法跑出來 10,20 之間的3個隨機數,然後再用隨機數的方法跑出來 50,70 之間的乙個隨機數。然後手動輸入四個數字,判斷是否與機器隨機出來的數字是相同的。如果是,輸出yes,如果不是,輸出no。include include include include inc...

使用T SQL的Rand函式生成隨機數的艱苦歷程

大量資料插入的幾種方式的速度比較 裡,有一列資料是用 rank 函式來生產的,用來造假資料。現在的問題是,如果要更新這一列的值,怎麼辦呢?也許全部刪除,重新插入一遍就可以。但是太慢了。於是隨手就寫出了下面的 update atable set acolumn maxint rand 結果完全出乎意料...