★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-wmvxochr-md.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
Given a function rand7
which generates a uniform random integer in the range 1 to 7, write a function rand10
which generates a uniform random integer in the range 1 to 10.git
Do NOT use system's Math.random()
. github
Example 1:微信
Input: 1
Output: [7]
Example 2:dom
Input: 2
Output: [8,4]
Example 3:spa
Input: 3
Output: [8,1,10]
Note:code
rand7
is predefined.n
, the number of times that rand10
is called. Follow up:orm
rand7()
function?rand7()
?已有方法 rand7
可生成 1 到 7 範圍內的均勻隨機整數,試寫一個方法 rand10
生成 1 到 10 範圍內的均勻隨機整數。htm
不要使用系統的 Math.random()
方法。 blog
示例 1:
輸入: 1 輸出: [7]
示例 2:
輸入: 2 輸出: [8,4]
示例 3:
輸入: 3 輸出: [8,1,10]
提示:
rand7
已定義。n
表示 rand10
的調用次數。 進階:
rand7()
調用次數的 指望值 是多少 ?rand7()
?1 /** 2 * The rand7() API is already defined in the parent class SolBase. 3 * func rand7() -> Int = {} 4 * @return a random integer in the range 1 to 7 5 */ 6 class Solution : SolBase { 7 func rand10() -> Int { 8 while(true) 9 { 10 var a:Int = rand7() 11 var b:Int = rand7() 12 var num:Int = (a - 1) * 7 + b 13 if num <= 40 {return num % 10 + 1} 14 a = num - 40 15 b = rand7() 16 num = (a - 1) * 7 + b 17 if num <= 60 {return num % 10 + 1} 18 a = num - 60 19 b = rand7() 20 num = (a - 1) * 7 + b 21 if num <= 20 {return num % 10 + 1} 22 } 23 } 24 }
1 /** 2 * The rand7() API is already defined in the parent class SolBase. 3 * func rand7() -> Int = {} 4 * @return a random integer in the range 1 to 7 5 */ 6 class Solution : SolBase { 7 func rand10() -> Int { 8 var a, b, no: Int? 9 repeat { 10 a = rand7() - 1 11 b = rand7() - 1 12 no = 7 * a! + b! 13 } while (no! > 39) 14 15 return (no! % 10) + 1 16 } 17 }
48 ms
1 /** 2 * The rand7() API is already defined in the parent class SolBase. 3 * func rand7() -> Int = {} 4 * @return a random integer in the range 1 to 7 5 */ 6 class Solution : SolBase { 7 func rand10() -> Int { 8 var num:Int = (rand7() - 1) * 7 + rand7() 9 return (num <= 40) ? (num % 10 + 1) : rand10() 10 } 11 }