Welcome to Subscribe On Youtube
470. Implement Rand10() Using Rand7()
Description
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()
.
Example 1:
Input: n = 1 Output: [2]
Example 2:
Input: n = 2 Output: [2,8]
Example 3:
Input: n = 3 Output: [3,8,10]
Constraints:
1 <= n <= 105
Follow up:
- What is the expected value for the number of calls to
rand7()
function? - Could you minimize the number of calls to
rand7()
?
Solutions
-
/** * The rand7() API is already defined in the parent class SolBase. * public int rand7(); * @return a random integer in the range 1 to 7 */ class Solution extends SolBase { public int rand10() { while (true) { int i = rand7() - 1; int j = rand7(); int x = i * 7 + j; if (x <= 40) { return x % 10 + 1; } } } }
-
// 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 (1) { int i = rand7() - 1; int j = rand7(); int x = i * 7 + j; if (x <= 40) { return x % 10 + 1; } } } };
-
# The rand7() API is already defined for you. # def rand7(): # @return a random integer in the range 1 to 7 class Solution: def rand10(self): """ :rtype: int """ while 1: i = rand7() - 1 j = rand7() x = i * 7 + j if x <= 40: return x % 10 + 1
-
func rand10() int { for { i := rand7() - 1 j := rand7() x := i*7 + j if x <= 40 { return x%10 + 1 } } }
-
/** * The rand7() API is already defined for you. * function rand7(): number {} * @return a random integer in the range 1 to 7 */ function rand10(): number { while (true) { const i = rand7() - 1; const j = rand7(); const x = i * 7 + j; if (x <= 40) { return (x % 10) + 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 { loop { let i = rand7() - 1; let j = rand7(); let x = i * 7 + j; if x <= 40 { return (x % 10) + 1; } } } }