加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

[Swift]LeetCode470. 用 Rand7() 实现 Rand10() | Implement Ran

发布时间:2020-12-14 05:04:56 所属栏目:百科 来源:网络整理
导读: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. Do NOT use system‘s? Math.random() .? Example 1: Input: 1Output

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.

Do NOT use system‘s?Math.random().?

Example 1:

Input: 1
Output: [7] 

Example 2:

Input: 2
Output: [8,4] 

Example 3:

Input: 3
Output: [8,1,10]?

Note:

  1. rand7?is predefined.
  2. Each testcase has one argument:?n,the number of times that?rand10is called.?

Follow up:

  1. What is the?expected value?for the number of calls to?rand7()?function?
  2. Could you minimize the number of calls to?rand7()?

已有方法?rand7?可生成 1 到 7 范围内的均匀随机整数,试写一个方法?rand10?生成 1 到 10 范围内的均匀随机整数。

不要使用系统的?Math.random()?方法。?

示例 1:

输入: 1
输出: [7]

示例 2:

输入: 2
输出: [8,4]

示例 3:

输入: 3
输出: [8,10]?

提示:

  1. rand7?已定义。
  2. 传入参数:?n?表示?rand10?的调用次数。?

进阶:

  1. rand7()调用次数的?期望值?是多少??
  2. 你能否尽量少调用?rand7()??

Runtime:?44 ms
Memory Usage:?5.9 MB
 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 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读