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

470.用Rand7()實現Rand10()

已有方法 rand7 可生成 1 到 7 範圍內的均勻隨機整數,試寫一個方法 rand10 生成 1 到 10 範圍內的均勻隨機整數。

不要使用系統的 Math.random() 方法。

示例 1:

輸入: 1
輸出: [7]

示例 2:

輸入: 2
輸出: [8,4]

示例 3:

輸入: 3
輸出: [8,1,10]

提示:

  1. rand7 已定義。
  2. 傳入引數: n 表示 rand10 的呼叫次數。

進階:

  1. rand7()呼叫次數的 
    期望值
     是多少 ?
  2. 你能否儘量少呼叫 rand7() ?

// The rand7() API is already defined for you.
// int rand7();
// @return a random integer in the range 1 to 7

class Solution {
public:
    int rand10() {
        while (true) {
            int num = (rand7() - 1) * 7 + rand7();
            if (num <= 40) return num % 10 + 1;
        }
    }
};