c++ 庫有乙個名為 rand 的函式,每次呼叫該函式都將返回乙個非負整數。randomnum = rand();
隨機數大小是在0到rand_max,值為2147483647。
要使用 rand 函式,必須在程式中包含 標頭檔案。
需要注意的是,rand()函式返回的數字其實是偽隨機數,實際上並不是隨機的,它們實際上是用演算法生成的。
該演算法需要乙個起始值,稱為種子,以生成數字。如果沒有給出乙個種子,那麼它將在每次執行時產生相同的數字流。
在 c++ 中,為隨機數生成器提供乙個種子是通過呼叫 srand 函式完成的。在 rand 被呼叫之前,srand 函式要先被呼叫,並且 srand 在整個程式中僅被呼叫一次。
srand 函式在呼叫時期望接收到非負整數,可以直接傳遞給它,如:srand(10);
由於rand()函式返回的值實際上是用演算法生成的,因此若再傳遞10給seed,rand執行時還是會產生相同的數字流。
實際上,獲取種子值的另乙個常見做法是呼叫 time 函式,它是 c++ 標準庫的一部分。要使用time 函式,必須在程式中包含 標頭檔案。
time 函式返回從 1970 年 1 月 1 日午夜開始到現在逝去的秒數,因此每次執行程式時,它都將提供不同的種子值。請注意,在呼叫它時必須給它傳遞乙個引數 0。srand(time(0));
將隨機數的範圍限制在 1 和某個最大值 max 之間的整數,可以使用以下公式:
number = rand() % max + 1;
更一般地,擴充套件到任意範圍內的隨機數,其通用公式如下:
number = (rand()%(maxvalue - minvalue +1)) + minvalue;
利用 rand_max 產生隨機小數:double x = (double)(rand()) / rand_max;
用整數表示小數
在嵌入式開發過程中,為了在顯示端顯示小數 負數等非uint型別數值,往往採用將資料放大10倍 100倍等,今天看到另一種方法,特此記錄 這個方法的核心公式是y kx m y 顯示值,最終在顯示屏上可見的值 x 傳輸值,和顯示屏通訊時傳輸的數值,一定是uint資料型別 k 解析度,該值確定了每個取值的...
mysql rand 產生隨機整數範圍及方法
根據官方文件,rand 的取值範圍為 0,1 若要在i r j 這個範圍得到乙個隨機整數r 需要用到表示式floor i rand j i 1 例如,若要在7 到 12 的範圍 包括7和12 內得到乙個隨機整數,可使用以下語句 select floor 7 rand 6 另外,也可以用round四捨...
mysql rand 產生隨機整數範圍及方法
根據官方文件,rand 的取值範圍為 0,1 若要在i r j 這個範圍得到乙個隨機整數r 需要用到表示式floor i rand j i 1 例如,若要在7 到 12 的範圍 包括7和12 內得到乙個隨機整數,可使用以下語句 select floor 7 rand 6 另外,也可以用round四捨...