用 Rand7() 实现 Rand10()

本文介绍了两种利用 Rand7() 函数生成 Rand10() 的方法:拒绝采样和优化后的策略。在拒绝采样中,通过不断生成满足条件的随机数来实现;在优化策略中,有效利用被拒绝的随机数,减少平均调用次数,期望约为 2.2123 次。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一:拒绝采样

我们可以用拒绝采样的方法实现 Rand10()。在拒绝采样中,如果生成的随机数满足要求,那么久返回该随机数,否则会不断生成直到一个满足要求的随机数为止。若我们调用两次 Rand7(),那么可以生成 [1, 49] 之间的随机整数,我们只用到其中的 40 个,用来实现 Rand10(),而拒绝剩下的 9 个数,如下图所示。

在这里插入图片描述

class Solution extends SolBase {
   
    public int rand10() {
   
        int row, col, idx;
        do {
   
            row = rand7();
            col = rand7();
            idx = col + 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值