1. 程式人生 > >好題彙總(持續更新)

好題彙總(持續更新)

  1. 題目

    給定一個隨機數生成器,這個生成器能均勻生成1到5(1,5)的隨機數,如何使用這個生成器生成均勻分佈的1到7(1,7)的數?

  2. 思路

    方法一:生成兩個(1,5)的隨機數,這樣一共是25種情況,注意這兩個數是有順序的,從這25種情況中,取前21種,每三種代表(1,7)中的一個數字,如果取到的是這21種以外的情況,丟掉重新取。

    方法二:生成三個(1,5)的隨機數,分別表示一個二進位制位,其中1和2對映為0,3跳過,4和5對映為1。這樣產生的三位二進位制數,即1-8這8個數字都是等概率的。如果產生的是8,那麼丟棄即可。

    方法三:生成兩個(1,5)的隨機數,產生一個兩位的五進位制數,5 * (random5() – 1) + random5()。這個公式能夠等概率產生1-25,即第一個隨機數代表:0,5,10,15,20,地位代表1,2,3,4,5。這樣對這個數字(1-25的數字),採用方法一的方法,只用1-21,分7分,代表1-7,22-25這4個數字扔掉。