编辑代码

<?php

function simulate_fill($num_trials) {
    $filled_full_count = 0; // 记录填满9个格子的总次数
    $score_distribution = []; // 用于记录每个分数段的次数

    for ($i = 0; $i < $num_trials; $i++) {
        // 开局随机选择一个幸运数字,范围为1到10
        $lucky_number = rand(1, 10);
        
        $score = 0;
        $filled_numbers = [];
        $number_count = []; // 用于记录每个数字的出现次数

        // 填入30次数字
        for ($j = 0; $j < 30; $j++) {
            // 随机选择一个数字,范围为1到10
            $number = rand(1, 10);
            
            // 检查是否是幸运数字
            if ($number === $lucky_number) {
                $score += 10; // 填入幸运数字加10分
            }

            // 检查是否有重复数字
            if (isset($number_count[$number])) {
                $number_count[$number]++;
                if ($number_count[$number] == 2) {
                    // 第一次重复,删除并加分
                    unset($filled_numbers[array_search($number, $filled_numbers)]);
                    $score += 100;
                }
            } else {
                // 新数字
                $number_count[$number] = 1;
                $filled_numbers[] = $number;
                $score += 1; // 新数字加1分
            }

            // 检查是否填满格子
            if (count($filled_numbers) == 9) {
                // 填满且不重复,删除所有数字并加分
                $score += 2000;
                $filled_numbers = []; // 删除所有数字
                $filled_full_count++; // 记录填满次数
            }
        }

        // 统计分数段(四舍五入到最近的100的倍数)
        $score_segment = round($score / 100) * 100;
        if (!isset($score_distribution[$score_segment])) {
            $score_distribution[$score_segment] = 0;
        }
        $score_distribution[$score_segment]++;
    }

    // 打印填满9个格子的总次数
    echo "Total times filled 9 boxes: $filled_full_count\n";

    // 打印分数段统计
    echo "Score Distribution:\n";
    foreach ($score_distribution as $score => $count) {
        echo "Score: $score, Count: $count\n";
    }
}

// 运行模拟
$num_trials = 100000; // 模拟次数
simulate_fill($num_trials);

?>