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