概率相關的題目

2021-06-05 16:39:05 字數 2081 閱讀 6266

1、乙個隨機數產生器以概率p生成0,以概率(1-p)生成1,怎樣生成等概率的0和1?

如果用這個隨機數產生器產生兩個位,出現00的概率為p^2,出現01的概率為p(1-p),出現10的概率為(1-p)p,出現11的概率為(1-p)^2。看到沒有,出現01和10的概率相等。那麼我們就可以用這個隨機數生成器每次產生2位,直到產生的是01或者10,當為01時,輸出0,當為10時輸出1。

問題擴充套件:還是給這麼乙個隨機數產生器,要求等概率地產生1,2,...,n。

解法1:每次產生n位,當為僅第一位是1,其他是0時輸出1,當僅有第二位是1,其他位是0是輸出2,……當僅有第n位是1,其他是0時輸出n。(這個解法有點0疼,好多資訊都浪費了,複雜度太高了)

解法2:從原問題的解答中,我們可以成功地得到等概率產生0和1的,求一下n-1二進位制表示的位數,比如為k。那麼我們每次等概率生成k位二進位制數,將這k位二進位制組裝成乙個數,如果這個數在0~n-1的範圍內,輸入這個數+1,否則重複產生。

2、不重複隨機數的產生

我們可以把這題稍微細化一點,隨機產生0~n-1中的k個不重複的隨機數。

解法1:最容易想到的方法就是,用乙個集合來裝這些隨機產生的數,當這個集合的大小不為k的時候,就沒完沒了的隨機產生並add到集合中。真正這麼幹過的童鞋會發現這個辦法是不行的,當k稍微大一點,這個程式就跑步出來了。

解法2:開闢乙個長度為n的陣列a,向其中裝入0~n-1,然後隨機產生乙個0~n-1的數x,將a[x]與a[n-1]交換,並將a[n-1]輸出,接下來隨機產生乙個0~n-2的數y,將a[y]與a[n-2]交換,並將a[n-2]輸出,知道輸出了k個數為止……**實現參考這裡。

3、給定能隨機生成整數1到5的函式,寫出能隨機生成整數1到7的函式

解法1:

產生k個數(k>1) 假定產生的數分別為n1,n2,n3,n4...那麼定義產生的數為n1-1+(n2-2)*5+(n3-1)*5^2+(n4-1)*5^3........於是產生的數字於區間(0,5^k-1)。然後把5^k分成k等分,產生的數字於哪個等分就是那個產生的隨機數(0~6),然後+1即可。如果位於k等分的餘數範圍,則重新執行一次上述過程。不用擔心餘數問題,當k取3時落到餘數範圍的概率就已經降低為6/125,而且餘數不會導致概率的問題,只是會影響效率。(相當於5進製)

解法2:

通過rand5()*5+rand5()產生6 7 8 9 10 11......26 27 28 29 30這25個數,每個數出現的概率相等,去前面3*7個數,捨棄後面的4個數,將6 7 8轉化成1, 9 10 11轉化成2,……,公式:(a-3) / 3,其實跟解法1是一樣的,包裝一下而已。

4、如何隨機選取1000個關鍵字

給定乙個資料流,其中包含無窮盡的搜尋關鍵字(比如,人們在谷歌搜尋時不斷輸入的關鍵字)。如何才能從這個無窮盡的流中隨機的選取1000個關鍵字?

定義長度為1000的陣列。對於資料流中的前1000個關鍵字,顯然都要放到陣列中。對於資料流中的的第n(n>1000)個關鍵字,我們知道這個關鍵字被隨機選中的概率為 1000/n。所以我們以 1000/n 的概率用這個關鍵字去替換陣列中的隨機乙個。這樣就可以保證所有關鍵字都以 1000/n的概率被選中。對於後面的關鍵字都進行這樣的處理,這樣我們就可以保證陣列中總是儲存著1000個隨機關鍵字。

ps:關於1000/n的概率問題,可以這樣來,隨機生成1~n的數,如果是在1~1000內那麼就替換相應位置

5、在半徑為1的圓中隨機選取一點

解法1:

假設圓心在(0,0)。在x軸[-1, 1],y軸[-1, 1]的正方形內隨機選取一點。然後判斷此點是否在圓內(通過計算此點到圓心的距離)。如果在圓內,則此點即為所求;如果不在,則重新選取直到找到為止。正方形的面積為4,圓的面積為pi,所以正方形內的隨機點在圓內的概率是 pi / 4。

解法2:

從[0, 2*pi)中隨機選乙個角度,對應於圓中的一條半徑,然後在此半徑上選乙個點。但半徑上的點不能均勻選取,選取的概率應該和距圓心的長度成正比,這樣才能保證隨機點在圓內是均勻分布的。

關於不均勻選取問題:在乙個直角三角形(斜邊長pi,直角邊長為1)斜邊上隨機選一點,然後投影到長為1的直角邊應該滿足條件。

關於概率的題目

來自腦客愛刷題 問題1 有乙個隨機函式 getrandom1tom 等概率生成1到m,怎麼實現1 n的等概率隨機生成函式。若m n,直接把不符合要求的部分去掉就可以。若m呼叫k次 getrandom1tom 1 生成k位的m進製數 k應該盡量小 使得k位m進製數的最大值大於等於n 1。將m進製數不符...

幾何概率題目

1.在區間 2,2 裡任取2個實數,它們的平方和 1的概率是大約是 是不是似曾相識?對的額 就是想不起來怎麼辦 好吧 還是看答案吧 還是將1維的轉換成2維的比較合適一點 畢竟公升了一維 看東西都比人家厲害了 不是麼 該區間內任意取兩個數就相當於在直角座標系中任意取乙個點,轉化為如下問題 在正方形範圍...

概率dp部分題目

記錄一些比較水不值得單獨寫一篇blog的概率dp題目 bzoj3036 綠豆蛙的歸宿 給出乙個有向無環的連通圖,起點為1終點為n,每條邊都有乙個長度。綠豆蛙從起點出發,走向終點。到達每乙個頂點時,如果有k條離開該點的道路,綠豆蛙可以選擇任意一條道路離開該點,並且走向每條路的概率為 frac 現在綠豆...