已有方法 rand7
可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10
生成 1 到 10 范围内的均匀随机整数。
不要使用系统的 Math.random()
方法。
输入: 1 输出: [7]
输入: 2 输出: [8,4]
输入: 3 输出: [8,1,10]
rand7
已定义。- 传入参数:
n
表示rand10
的调用次数。
rand7()
调用次数的 期望值 是多少 ?- 你能否尽量少调用
rand7()
?
/**
* 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
}
}