yahoo 函數返回某種機率的0,1

來源:互聯網
上載者:User

題目:一個函數foo可以返回機率為3:2的0,1,現要求寫一個fun2,要求返回等機率的0,1

看到百度有個面試題是這樣說的

有一個函數fun能返回0和1兩個值,返回0和1的機率都是1/2,問怎麼利用這個函數得到另一個函數fun2,使fun2也只能返回0和1,且返回0的機率為1/4,返回1的機率為3/4。(如果返回0的機率為0.3而返回1的機率為0.7呢)
在網上看到有同學的回答,寫的很好http://www.haogongju.net/art/1665092

解法思想:

0,1隨機產生,可以理解成2進位
a = fun() * 2^4 + fun() * 2^3 + fun() * 2^2 + fun() * 2^1 + fun() 等機率產生0-31的所有數
去掉30和31之後,在0-29之間進行一個%3 輸出

其實就是分配這30個數使得一個佔3份一個佔7份,按照那個同學的演算法:30個數中,對3模數,為0的有10個,非0的20個,這樣比例是1:2,還差一點,應該是9:21化簡後是3:7,所以模為0需要給對方一個,索性把0歸到對方,可以產生3:7.

返回1:3相對更簡單了,就弄四個值0-3,為0的返回0,1,2,3都返回1就可以了。這種方法比較直接。

 

回到我們的問題中,0,1此處foo中返回的機率不等,如何求解。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.