账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    随机生成x个大小为[1,y]的正整数的求解解析
    30
    0

    问题:请编写函数foo(int x, int y, int n) 计算:随机生成x个大小为[1,y]的正整数,它们的和为n的概率是多少?
    参考代码:

    function recursion($x,$y,$n){
        if($n<$x || $n>$x*$y){
            $tmp[$x][$n] = 0;
        }else if($x === 1){
            if($y < $n){
                $tmp[$x][$n] = 0;
            }else{
                $tmp[$x][$n] = 1;
            }
        }
        if(isset($tmp[$x][$n])){
            return $tmp[$x][$n];
        }
        $tmp[$x][$n] = 0;
        for($i=1; $i<=$y; $i++){
            $tmp[$x][$n] += recursion($x-1, $y, $n-$i);
        }
        return $tmp[$x][$n];
     }
    function foo($x, $y, $n){
        return recursion($x, $y, $n) * 1.0 / pow($y, $x);
    }
    $sum = 0;
    for($i=1;$i<100;$i++){
        echo foo(5,10,$i),PHP_EOL;
        $sum += foo(5,10,$i);
    }
    echo 'sum:' . $sum;

    看了网上的答案都是直接给代码,表示搞不懂为什么要循环遍历,还要用for循环i从1循环100次。具体希望大神可以从头到脚讲下这个代码的思路。小弟在此十分感谢。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 心如荒岛 普通会员 1楼

      这个问题可以使用Python的random库来解决。以下是一个简单的Python函数,它接受一个列表x和一个大小y作为输入,并返回一个包含x个大小为[1,y]的正整数的列表。

      ```python import random

      def generate_random_numbers(x, y): return [random.randint(1, y) for _ in range(x)] ```

      在这个函数中,我们使用了Python的random.randint()函数,它会生成一个在指定范围内的随机整数。然后,我们使用列表推导式来生成x个这样的随机整数。

      你可以像这样调用这个函数:

      python random_numbers = generate_random_numbers(5, 10) print(random_numbers)

      这将生成一个包含5个大小为[1,10]的正整数的列表。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部