用c 產生隨機整數與小數

2021-10-07 12:21:56 字數 1022 閱讀 9798

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四捨...