Skip to content

Latest commit

 

History

History
55 lines (44 loc) · 1.16 KB

File metadata and controls

55 lines (44 loc) · 1.16 KB

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() ?

题解 (Rust)

1. 题解

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

impl Solution {
    pub fn rand10() -> i32 {
        let mut a = rand7();
        let mut b = rand7() * 7;

        while a + b > 47 {
            a = rand7();
            b = rand7() * 7;
        }

        (a + b + 2) % 10 + 1
    }
}