Javascript Monty Hall JS实现提供50/50输出

Javascript Monty Hall JS实现提供50/50输出,javascript,math,Javascript,Math,显然,我的模拟是错误的,但我不知道为什么。它给出了一个50/50的输出,在这里它应该是66/33。我已经检查了我的代码两天了,仍然找不到它 我甚至查看了一些参考资料,试图了解他们的代码是如何工作的: 我将感谢任何帮助,提前谢谢 有一个github页面可运行: constroll=(a,b)=>Math.floor(Math.random()*(b-a+1)) 常量样本=100000 让yes=0 设no=0 对于(i=sample;i>0;i--){ 常数门=[“a”、“b”、“c”] //在

显然,我的模拟是错误的,但我不知道为什么。它给出了一个50/50的输出,在这里它应该是66/33。我已经检查了我的代码两天了,仍然找不到它

我甚至查看了一些参考资料,试图了解他们的代码是如何工作的:

我将感谢任何帮助,提前谢谢

有一个github页面可运行:

constroll=(a,b)=>Math.floor(Math.random()*(b-a+1))
常量样本=100000
让yes=0
设no=0
对于(i=sample;i>0;i--){
常数门=[“a”、“b”、“c”]
//在哪里可以找到汽车。
常数车=滚动(0,2)
//虚构的玩家首先选择了门。
常数第一=滚动(0,2)
//未选择的门。
const other_doors=doors.filter((门,索引)=>index!==first)
//打开的门表明那里没有汽车。
所示常数=滚动(0,1)
//如果玩家改变了主意。
常数变化=滚动(0,1)
//球员的最后决定。
const final=更改其他门[显示0:1]:门[第一个]
//如果玩家赢了或者没有赢。
康斯特赢家=门[车]==决赛
//如果玩家赢了:
//如果有变化,请给“是”打个分数。
//如果没有变化,就给“否”打个分数。
如果(获胜者)改变?是++:否++
}
console.log(示例)
console.log(“更改并赢得:+是”)

log(“未更改并赢得:+否)
我调整了您的代码并使其正常工作。我认为主要的错误是,打开的门只能是用户不仅没有选择的门,而且是我们知道汽车没有选择的门

constroll=(a,b)=>Math.floor(Math.random()*(b-a+1))
常量样本=100000
让yes=0
设no=0
对于(i=sample;i>0;i--){
常数门=[“a”、“b”、“c”]
//汽车所在的门
const car=车门[滚动(0,2)]
//虚构玩家选择的第一扇门
const first=门[滚动(0,2)]
//未选择的门
const other_doors=doors.filter(door=>door!==first)
//在没有汽车的地方可以显示的门
const showable=其他车门。过滤器(车门=>车门!==汽车)
//打开的门表明那里没有汽车。
显示常量=可显示[滚动(0,可显示长度-1)]
//未首先选择且未打开的门
const closed=doors.filter(门=>door!==first&&door!==显示)[0];
//虚构玩家选择的第一扇门和其余关闭的门。
const final_doors=[第一,关闭]
//如果玩家改变了主意。
常数变化=滚动(0,1)
//球员的最后决定。
const final=更改?关闭:第一个
//如果玩家赢了或者没有赢。
康斯特赢家=汽车===决赛
//如果球员赢了,如果有变化,给是一分;如果没有变化,给否一分。
如果(获胜者)改变?是++:否++
}
console.log(示例)
console.log(“更改并赢得:+是”)
console.log(“未更改并获胜:+否)
1)如果玩家确实选择了汽车,则显示的
门只能随机选择,否则他可能会“意外”看到汽车2)策略是否更改不应随机确定-您应该使用“保留”策略运行一次,使用“更改”策略运行一次评估各自成果的战略。