470. 用 Rand7() 实现 Rand10()】的更多相关文章

470. 用 Rand7() 实现 Rand10() 已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数. 不要使用系统的 Math.random() 方法. 示例 1: 输入: 1 输出: [7] 示例 2: 输入: 2 输出: [8,4] 示例 3: 输入: 3 输出: [8,1,10] 提示: rand7 已定义. 传入参数: n 表示 rand10 的调用次数. 进阶: rand7()调用次数的 期望值 是…
题目描述 已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数. 不要使用系统的 Math.random() 方法. 示例 1: 输入: 1 输出: [7] 示例 2: 输入: 2 输出: [8,4] 示例 3: 输入: 3 输出: [8,1,10] 提示: rand7 已定义. 传入参数: n 表示 rand10 的调用次数. 进阶: rand7()调用次数的 期望值 是多少 ? 你能否尽量少调用 rand7() …
题目链接 https://leetcode-cn.com/problems/implement-rand10-using-rand7/ 题意: 给定一个rand7()的生成器,求解如何产生一个rand10()的生成器.注意这里定义rand7()的范围是17,而不是06 思路: 关键在于产生的结果必须是等概率的,这是一类非常泛化的题.具体而言涉及到由任意的randm()转化到randn()的计算方式. 详细解读可以参考:https://blog.csdn.net/u010025211/articl…
已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数. public class Solution { public static int rand10() { int ans = rand2(); for (int i = 0; i < 10; i++) { ans = ans << 1; //二进制左移一位 ans = ans ^ rand2();//将随机生成的0或1,添加到二级制尾部 } return…
题目:已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10.分析:要保证rand10()在整数1-10的均匀分布,可以构造一个1-10*n的均匀分布的随机整数区间(n为任何正整数).假设x是这个1-10*n区间上的一个随机整数,那么x%10+1就是均匀分布在1-10区间上的整数.由于(rand7()-1)*7+rand7()可以构造出均匀分布在1-49的随机数(原因见下面的说明),可以将41-49这样的随机数剔除掉,得到的数1-40仍然是…
这种题要分两步,第一步是“插空儿”,第二步是“筛” 1.rand7生成rand10 只要是10的倍数就好 int rand10() { int num; do{ num = (rand7() - ) * + rand7() - ; } ); + ; } 概率计算: https://blog.csdn.net/excellentlizhensbfhw/article/details/81174138 再将这49个数分为两部分, {0, 1, 2, ... , 39}和{40, 41, .., 48…
题意 已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10 参考代码 int rand7() { srand((int)time(NULL)); //参考 + ; } int rand10() { int x; do { x = (rand7()-) * + rand7(); }); + ; } 解析 要保证rand10()均匀生成1~10的随机数,可以构造一个0~10n的随机数区间,这样通过rand10n()%10+1就是所求. 现在目…
题目1:已知rand7() 可以产生 1~7 的7个数(均匀概率),利用rand7()  产生rand10()   1~10(均匀概率) int rand10() { int temp; int temp2; do { temp = rand7(); } );//temp 1到5 do { temp2 = rand7(); );//temp2 1到2 ) * ; } 题目2:给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数.…
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:…
[问题描写叙述] rand7是一个能生成1-7的随机数.要求利用rand7生成1-10的随机数. [算法思想] 1.组合数学方法 第1次 1 2 3 4 5 6 7 之中用rand7取一个数 第2次从 2 3 4 5 6 7 8 之中取一个数 第3次从 3 4 5 6 7 8 9 之中取一个数 第4次从 4 5 6 7 8 9 10 之中取一个数 第5次从 5 6 7 8 9 10 1 之中取一个数 第6次从 6 7 8 9 10 1 2 之中取一个数 ... 第10次从 10 1 2 3 4…