隨機數的應用 廣告投放

2021-10-10 01:18:55 字數 1006 閱讀 7356

題目:

**有乙個展示廣告的區域,每次同時展示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...