## 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 = 1
Output: 
```

Example 2:

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

Example 3:

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

Constraints:

• `1 <= n <= 105`

## 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.