吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2812|回复: 19
收起左侧

[原创工具] 【易语言】“三选一游戏”验算工具,附源码(算法更新)

[复制链接]
panpcj 发表于 2025-10-30 20:16
本帖最后由 panpcj 于 2025-11-1 16:20 编辑

我在最近经常听到一个游戏:
这个游戏的规则是:参赛者从三个选项(如三扇门)中选择一个,主持人(知道正确答案)从剩下的两个选项中去掉一个错误选项,然后询问参赛者是否改变选择;最终参赛者坚持原选或换选,以确定是否获得奖品。

当然我们已经不需要复杂的去求证,数学家已经告诉我们如果参赛者换选,获得奖品的概率是2/3。

实践是检验真理的唯一标准,于是我决定验证一下,花几分钟做了一个小软件,运行计算之后虽然有误差,但大体确实如此。
image.png

感谢某浏览器提供的随机数思路,改进了一下算法,现在的随机基本稳定在33.3%左右,成品和源码均已更新。

思路

思路


附上成品以及易语言源代码,里面有一些简单的组件使用方法,供易语言初学者学习。

链接: https://pan.baidu.com/s/1GbTA-NgNhUjqLe7NxuWxlA?pwd=fdtv 提取码: fdtv



免费评分

参与人数 4吾爱币 +8 热心值 +4 收起 理由
yjwpojie + 1 + 1 用心讨论,共获提升!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
confiant + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
linuxprobe + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| panpcj 发表于 2025-11-7 16:18
SGLD001 发表于 2025-11-2 18:40
.版本 2

.子程序 _取随机数, 整数型, 公开, MT高质量伪随机

.版本 2

.DLL命令 HeapAlloc, 整数型, "Kernel32.dll", "HeapAlloc"
    .参数 hHeap, 整数型
    .参数 dwFlags, 整数型
    .参数 dwBytes, 整数型

.DLL命令 GetProcessHeap, 整数型, "kernel32.dll", "GetProcessHeap"
coolice 发表于 2025-10-31 08:55
10w次计算结果如下:

代码(AI)如下:
[Python] 纯文本查看 复制代码
import random

def monty_hall_simulation(num_trials):
    """
    模拟蒙提霍尔问题
    
    参数:
    num_trials: 模拟的试验次数
    
    返回:
    stay_wins: 不换门赢得汽车的次数
    switch_wins: 换门赢得汽车的次数
    """
    stay_wins = 0
    switch_wins = 0
    
    for _ in range(num_trials):
        # 随机放置汽车在一扇门后 (0, 1, 2)
        car_door = random.randint(0, 2)
        
        # 参赛者随机选择一扇门
        contestant_choice = random.randint(0, 2)
        
        # 主持人打开一扇有山羊的门(不能是参赛者选择的门)
        remaining_doors = [i for i in range(3) if i != contestant_choice]
        
        # 如果参赛者选择的是有车的门,主持人可以打开剩下两扇门中的任意一扇
        if contestant_choice == car_door:
            host_opens = random.choice(remaining_doors)
        else:
            # 如果参赛者选择的是山羊,主持人必须打开另一扇有山羊的门
            host_opens = remaining_doors[0] if remaining_doors[1] == car_door else remaining_doors[1]
        
        # 计算换门后的选择
        switch_choice = [i for i in range(3) if i != contestant_choice and i != host_opens][0]
        
        # 统计结果
        if contestant_choice == car_door:
            stay_wins += 1
        if switch_choice == car_door:
            switch_wins += 1
    
    return stay_wins, switch_wins

# 运行模拟
num_trials = 100000
stay_wins, switch_wins = monty_hall_simulation(num_trials)

print(f"模拟次数: {num_trials}")
print(f"不换门赢得汽车的次数: {stay_wins}")
print(f"换门赢得汽车的次数: {switch_wins}")
print(f"不换门的胜率: {stay_wins/num_trials:.4f} ({stay_wins/num_trials*100:.2f}%)")
print(f"换门的胜率: {switch_wins/num_trials:.4f} ({switch_wins/num_trials*100:.2f}%)")
SGLD001 发表于 2025-10-30 20:36
646664 发表于 2025-10-30 20:49
感谢分享!
flybird2007 发表于 2025-10-30 21:02
你的程序应该没问题,我记得原版的游戏是主持人只是问游戏者是不是要换选择, 并不去掉一个错误选项。原版的取胜概率是2/3,  你说的游戏去掉了一个错误选项, 取胜概率应该更高。
跌宕起伏 发表于 2025-10-30 23:54
三门问题:参赛者从三扇门中选择一扇,其中一扇后面有汽车,另外两扇后面是山羊。主持人(知道门后内容)打开一扇有山羊的门后,参赛者决定是否换门。换门后赢得汽车的概率是2/3,不换的概率是1/3。

跌宕起伏 发表于 2025-10-31 00:13
情况汽车真实位置 你选择1号后,主持人必须打开一扇山羊门 如果你不换 如果你换
A 1号门 打开2或者3(任意一山羊门)
B 2号门 只能打开3号(只有它是山羊门)
C 3号门 只能打开2号(同上)

结果:你不换那一列只有1/3才能赢。你换了有2/3可以赢。
lanbaibenyi 发表于 2025-10-31 08:06
真的是三分之一么? 研究研究~
ggxxuser 发表于 2025-10-31 09:09
跌宕起伏 发表于 2025-10-31 00:13
结果:你不换那一列只有1/3才能赢。你换了有2/3可以赢。

对,这个就是正解,简单通俗易懂,反正不换那一列只有1/3才能赢
yaochangfu 发表于 2025-10-31 10:32
感谢分享,
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-3-18 20:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表