題目1:現有隨機生成器rand3(),可以產生0~2這三個整數中的隨機乙個。你能構造出乙個新的隨機生成器rand88(),讓它產生0~87之間的隨機數嗎?
思路:
1,randn()若能產生1~n之間的隨機數,那麼用兩次randn()就能產生1~n^2之間的隨機數,第乙個隨機數用來決定大的區域是哪一塊,第二個隨機用來決定選定大區域後裡面的小區域選擇哪一塊。同理也能產生1~n^3, 1~n^4, ... 1~n^m等等之間的隨機數。2,randn()若能產生1~n之間的隨機數,那麼通過範圍捨棄,能產生1~m(m1~m之間的隨機數,即randn()%m+1.
根據以上三條,便可以由已知的隨機生成器構造出任何新的隨機生成器。
題目2:現有隨機生成器rand(),有0.3的概率產生0, 0.7的概率產生1。你能構造出乙個新的隨機生成器rand2(),讓它等概率產生0和1嗎?
思路:
用兩次rand(), 兩次的結果有 00, 01, 10, 11這四種,其中 01 和 10 的出現概率是相同的(0.21).剩餘過程略。
等概率隨機數生成器
題目 假設你已經有乙個隨機數生成器,能夠以概率p生成0,概率1 p生成1,請問如何設計演算法以概率q等概率地生成0 6這七個數字中的乙個?即每個數字的概率均為q,q 1 7.我們先從簡單的情況開始考慮,假設需要生成0和1,二者概率均為q。那麼我們可以讓已有的隨機數生成器產生兩個數字,那麼產生的數字及...
面試題 數學與概率 設計隨機數生成器
假設你已經有乙個隨機數生成器,能夠以概率p生成0,概率1 p生成1,請問如何設計演算法以概率q等概率地生成0 6這七個數字中的乙個?即每個數字的概率均為q,q 1 7.我們先從簡單的情況開始考慮,假設需要生成0和1,二者概率均為q。那麼我們可以讓已有的隨機數生成器產生兩個數字,那麼產生的數字及概率是...
SDK編寫簡單的隨機數生成器
上幾天幫同學搞了乙個隨機數生成器,首先在網上搜尋了一下,發現網上有的做的也比較的簡單,但是功能還是比較全的。而且發現自己學的東西剛好可以寫乙個隨機數生成器。當然還有些預備知識沒有學,所以現學現用了。計時器的有關知識我已經了解了,首先要用到建立字型,然後是建立父視窗控制項,然後就是利用rgb的顏色的變...