題目:
**有乙個展示廣告的區域,每次同時展示2個不同的廣告素材,現有n個廣告素材及每個廣告出現的權重std::vectorweights[n]; weight[i]代表第i個廣告權重。實現該廣告展示函式。
例如weights=;則總權重是10,0號廣告素材出現概率是1/10,1號是2/10…
如果執行1000萬次該函式,則統計後0號廣告出現200萬次左右,1號400萬次左右…(每次返回2個廣告所以統計次數是2000萬次)
說明:
1.為了保證使用者新鮮感,演算法需要保證每一種組合都有出現的可能。不能按固定組合依次輸出。
2.每次返回2個不同的,請務必保證!
3.隨機函式為: int rand(void);
4.可以額外填加全域性變數、函式和main函式中的**。
分析:
隨機數生成的區間是權重之和,所以我們可以預處理字首和,用於判斷產生的隨機數具體落在哪個區間,這裡用的是o(n)的列舉,n是廣告個數,想要更快可以使用二分或者hash。
**:
#include #include #include #include using namespace std;
int ads_num; //廣告素材的數量
vectorweights;//每個廣告素材的權重
int f[1000]; //權重字首和
int sum;
void genadvertiseitem(int &first, int& second)
int main()
srand(time(0));
int first,second;
int* counter = new int[ads_num](); //每個的出現次數
for(int i=0;i<10000000;i++)
for(int i=0;i}
隨機數應用
隨機數應用 隨機呼叫1 3之間的整數 random.randint 1,3 in 50 random.randint 1,3 out 50 3 in 51 random.randint 1,3 out 51 2 in 52 random.randint 1,3 out 52 1 in 53 rand...
應用篇 隨機數
目錄 一 隨機數的應用 二 隨機數的性質 三 偽隨機數生成器 1.偽隨機數生成器的結構 1 偽隨機數生成器的內部狀態 2 偽隨機數生成器的種子 四 對偽隨機數生成器的攻擊 1 生成金鑰 對稱密碼和訊息認證碼 2 生成金鑰對 公鑰密碼和數字簽名 3 生成初始化向量 分組密碼的模式 cbc cfb of...
JavaScript隨機數的應用
function getrandom function getrandomint min,max 此示例返回指定值之間的隨機整數。該值不低於min 或者大於minif 的下乙個整數min不是整數 並且小於 但不等於 max。要求 隨機生成長度為 10 的陣列。每項的型別為 object 物件 其 x...