rand 的最大值

2021-08-15 00:02:10 字數 794 閱讀 1406

rand()函式是乙個在開發的時候比較常用的函式,但這個函式返回隨機數的取值範圍並非多大的值都可以,在工作修乙個**活動bug的時候曾經遇到這樣一種情況,當總權重大於rand的最大值2^16 = 32767的時候,rand返回的值將不會大於32767,也就是說後面的獎勵將永遠不會被抽到。

int __cdecl rand (void)

後來在公司的**裡發現了另一段**可以解決rand範圍大於32767的情況,估計前人也踩過這個坑,這裡將**貼一下。

#define rand_max 0x7fff

int randomnum(int max_num)

int randomnum(int min_num, int max_num)

int interval_num = max_num - min_num;

if (interval_num <= 0)

if (interval_num < rand_max)

else

}

主要處理也就是在函式的最後一句

int(((

rand

() %

rand_max

) * 1.0 /

rand_max

) *interval_num

);用rand隨機取乙個0~32767的值x,然後以32767為分母乘以我們傳入的值interval_num,最後得到結果就是乙個在interval_num範圍內的乙個值 interval_num   *  x/36767。

滑動視窗的最大值 佇列的最大值

請定義乙個佇列並實現函式max得到佇列裡的最大值,要求函式max push back和 pop front的時間複雜度都是o 1 在佇列中維護乙個儲存最大值的佇列,當pop和push操作的同時也對最大值佇列進行維護。當彈出的時佇列中的最大值時,也彈出最大值佇列的頭,當壓入新值時,對最大值佇列從後向前...

int 最大值 239 滑動視窗最大值

給定乙個陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的最右側。你只可以看到在滑動視窗內的 k 個數字。滑動視窗每次只向右移動一位。返回滑動視窗中的最大值。示例 輸入 nums 1,3,1,3,5,3,6,7 和 k 3 輸出 3,3,5,5,6,7 解釋 滑動視窗的位置 最大...

最大值的選取

如果問題中各資料的範圍明確,那麼無窮大的設定不是問題,在不明確的情況下,很多程式設計師都取0x7fffffff作為無窮大,因為這是32 bit int的最大值。如果這個無窮大只用於一般的比較 比如求最小值時min變數的初值 那麼0x7fffffff確實是乙個完美的選擇,但是在更多的情況下,0x7ff...