## 470. Implement Rand10() Using Rand7()

Given the **API** `rand7()`

that generates a uniform random integer in the range `[1, 7]`

, write a function `rand10()`

that generates a uniform random integer in the range `[1, 10]`

. You can only call the API `rand7()`

, and you shouldn't call any other API. Please **do not** use a language's built-in random API.

Each test case will have one **internal** argument `n`

, the number of times that your implemented function `rand10()`

will be called while testing. Note that this is **not an argument** passed to `rand10()`

.

**Follow up:**

- What is the expected value for the number of calls to
`rand7()`

function? - Could you minimize the number of calls to
`rand7()`

?

**Example 1:**

Input:n = 1Output:[2]

**Example 2:**

Input:n = 2Output:[2,8]

**Example 3:**

Input:n = 3Output:[3,8,10]

**Constraints:**

`1 <= n <= 10`

^{5}

## Rust Solution

```
struct Solution;
use rand::distributions::Uniform;
use rand::thread_rng;
use rand::Rng;
impl Solution {
fn rand10() -> i32 {
let distribution: Uniform<i32> = Uniform::new(0, 10);
let mut rng = thread_rng();
rng.sample(distribution) + 1
}
}
```

Having problems with this solution? Click here to submit an issue on github.