1. 程式人生 > >leetcode 479用 Rand7() 實現 Rand10()

leetcode 479用 Rand7() 實現 Rand10()

rand7()表示隨機等概率的產生1-7之間的任一個數

要用rand7產生rand10可以考慮用七進位制轉化為十進位制擴大數字範圍,基本思路是產生randN,N是10的倍數。

class Solution:
    def rand10(self):
        """
        最後的返回結果記得加1
        """
        res = self.rand40()
        while res >= 40:
            res = self.rand40()
        return res % 10 +1
    '''
    產生0-39 40個數 是10 的倍數
    '''
    def rand40(self):
        res = 7 * (rand7()-1) + (rand7()-1)
        return res