Java教程

【Java】470. 用 Rand7() 实现 Rand10()---通过rand7()+rand7()结果出现的概率,快速解决问题!!!

本文主要是介绍【Java】470. 用 Rand7() 实现 Rand10()---通过rand7()+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() ?

详情:
枚举如下:
	a	1	2	3	4	5	6	7
b								
1		2	3	4	5	6	7	8
2		3	4	5	6	7	8	9
3		4	5	6	7	8	9	0
4		5	6	7	8	9	0	1
5		6	7	8	9	0	1	2
6		7	8	9	0	1	2	3
7		8	9	0	1	2	3	4
去掉右上角的  
6	7	8
7	8	9
8	9	0    后

每个数字的出现次数为4次,0-9的概率相同

代码:
public int rand10() {
        int a=rand7(); 
        int b=rand7();
        if(a>4&&b<4){
          return rand10();
        }else{
          return (a+b)%10+1;
        }
    }

在这里插入图片描述

这篇关于【Java】470. 用 Rand7() 实现 Rand10()---通过rand7()+rand7()结果出现的概率,快速解决问题!!!的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!