编程C,C ++,Java,PHP,Ruby,图灵,VB
计算机科学加拿大 
编程C,C ++,Java,PHP,Ruby,图灵,VB  

用户名:   Password: 
 登记登记   
 蒙特馆问题模型
指数 -> 编程,Ruby. -> 红宝石提交
查看上一个主题 可打印的版本下载主题利率主题订阅本主题私人信息刷新页面 查看下一个主题
作者 信息
虫子




邮政发布: 2008年12月11日星期四:下午9:31  帖子主题:蒙特馆问题模型

这是我写的脚本,以帮助我在Ruby中学习,并来自WTD的语法帮助。然而,所有的逻辑都是由自己完成的。

这是一个经典的蒙特馆问题的模型。它根据命令来计算赢或丢失来改变“门”或保持相同的“门”。它运行100万次,以提供准确的结果,这正是我预期的那样。

红宝石:

班级 MontyHall
        #参数(boolean)允许您选择天气或不是“玩家”的改变门
        def 初始化 (switchdoor.)
               @switchdoor = switchdoor.
                @chosenDoor =
                @winDoor =
        结尾
       
        #this方法计算游戏的胜利或丢失
        def calcWin                                 
                #this代表'玩家'选择的门
                @chosenDoor = 兰特(max =. 3)             
                 #this代表着胜利的门
                @winDoor = 兰特(max =. 3)               
               
               
                如果 @SwitchDoor. 然后                              
                        如果@chosendoor == @windoor.
                                返回 错误的
                        别的
                                返回 真的
                        结尾
                结尾
                #this是评估播放器是否没有切换门
               @chosendoor == @windoor.     
        结尾
        def to_s.       
                “switchdoor.:#{@ switchdoor} chosendoor:#{@ chosendoor} windoor: #{@winDoor}"
        结尾
结尾

#bigger号意味着更多的焦育
迭代= 1_000_000        

#create 1对象为true,一个for false
switch = montyhall。新的(真的)                   
保持= montyhall。新的(错误的)
#Keep of wins
numwinswitch = 0                                                               
numwinpeal = 0


迭代。时代
        #increment如果赢了
        numWinSwitch +=1 如果 switch.Calcwin.                
        numWinKeep +=1 如果 keep.Calcwin.
结尾
put “选择新门的胜利数量: #{numWinSwitch}"
put "当新的门选择时赢得胜利: #{(numWinSwitch/(ITERATIONS/100))}"
put “使用原始门时的胜利数量: #{numWinKeep}"
put “当使用原门时赢得胜利: #{(numWinKeep/(ITERATIONS/100))}"


注释?改善的事情?不同意结果?

哦,这是我的第一个Ruby程序,实际上做了什么,所以真的很难。 (是的,非常关键,我可以接受它。这是我学习的方式)。
赞助
赞助
赞助
赞助
吉安尼




邮政发布: 2008年12月11日星期四11:40  帖子主题:RE:Monty-Hall问题模型

看起来很好看,也有效,哈哈!只有一件事真的引起了我的注意。

您可以将变量设置为3次,而且您不会在其他任何地方使用它。
红宝石:

                #this代表'玩家'选择的门
                @chosenDoor = 兰特(max =. 3)             
                 #this代表着胜利的门
                @winDoor = 兰特(max =. 3)               


如果一个人真的想要迂腐,我想一个人可以抱怨初始化方法名称和Param列表之间的空间。
红宝石:

        #参数(boolean)允许您选择天气或不是“玩家”的改变门
        def 初始化 (switchdoor.)


除此之外,看起来不错!
八达峰




邮政发布: FRI 12月12日12:16 AM  帖子主题:RE:Monty-Hall问题模型

也许你可以为那些没有/使用Ruby的人发布一些产出的样本。
吉安尼




邮政发布: FRI 12月12日12:18 AM  帖子主题:RE:Monty-Hall问题模型

代码:
[gianni @ gianni] [〜/ projects / ruby​​ / compsci.ca]
(23:29:42) $ ./monty_hall.rb
选择新门的胜利数: 667147
当新的门选择时赢得胜利: 66
使用原门时的胜利数: 332934
使用原始门使用时赢得胜利: 33

[gianni @ gianni] [〜/ projects / ruby​​ / compsci.ca]
(23:29:47) $ ./monty_hall.rb
选择新门的胜利数: 667341
当新的门选择时赢得胜利: 66
使用原门时的胜利数: 333884
使用原始门使用时赢得胜利: 33

[gianni @ gianni] [〜/ projects / ruby​​ / compsci.ca]
(23:30:20) $ ./monty_hall.rb
选择新门的胜利数: 666332
当新的门选择时赢得胜利: 66
使用原门时的胜利数: 333462
使用原始门使用时赢得胜利: 33

[gianni @ gianni] [〜/ projects / ruby​​ / compsci.ca]
(23:30:36) $
WTD.




邮政发布: FRI 12月12日12:41 AM  帖子主题:RE:Monty-Hall问题模型

八达水@Fri 12月12日,2008年1:16 PM写道:
也许你可以为那些没有/使用Ruby的人发布一些产出的样本。


红宝石免费。 微笑
Brighguy.




邮政发布: FRI 12月12日12:51 AM  帖子主题:RE:Monty-Hall问题模型

这不是蒙特大厅,这是'选择一个门,猜测是否正确'。对于你需要的蒙蒂大厅 蒙蒂。他的行为使得问题的所有不同。
八达峰




邮政发布: FRI 12月12日,2008年1:16 AM  帖子主题:RE:Monty-Hall问题模型

Brighguy,他的产出往往不同意。

当你改变66%时
当他保持原来的门时候,他得到33%
Brighguy.




邮政发布: FRI 12,2008年12月1日1:37  帖子主题:RE:Monty-Hall问题模型

我不认为很多人会对这些结果发出问题。这很清楚你的第一次猜错是错的2/3。
赞助
赞助
赞助
赞助
虫子




邮政发布: FRI 12月12日,2008年10:16 AM  帖子主题:RE:Monty-Hall问题模型

是的,'max'是我误读了方法描述。发布后,这显着改变了几分钟。
克斯蒂斯




邮政发布: 2010年7月21日星期三12:47 PM  帖子主题:RE:Monty-Hall问题模型

我知道这个线程很古老,但我正在寻找在图灵中做到这一点的信息,我偶然发现了这一点。我从完成了我的程序以来,但我以为我会加到Brighguy所说的。

原因这不是一个蒙特大厅,但仍然给出了蒙特大厅的结果是因为没有门被电脑化的“蒙特”消除。这一事实提供了66%的交换率,即您当然是错误的33%的时间。

代码:

                if @switchDoor then                               
                       如果@chosendoor == @windoor
                                return false
                        else
                                return true
                        end
                end


当门挑选出错时,门被切换,报告了一个获胜。由于2/3的SwitchDoor迭代将是错误的,那些2/3将被报告为获胜。当然,非交换机迭代非常简单,因为它是对的,如果不是,如果不是,这是一个丢失,一个非常清晰的1/3机会。

如果没有删除门,那就是只是写入一个只是指出解决方案的程序,实际上没有通过它。

在这里没有任何不尊重,只是想帮助他们将来看待这一点的人,因为它会让我感到困惑,但没有蒙羞。

干杯
虫子




邮政发布: 2010年7月21日星期三下午1:24  帖子主题:RE:Monty-Hall问题模型

实际上并没有“删除”门。如果“播放器”选择了正确的门,他只能将“切换”到不正确的门。如果他选择了一个不正确的门,他只能切换到正确。这一点代码真的可以缩短:
代码:

如果@switchdoor那么
   返回@chosendoor!= @Windoor
结尾
这可能会更加缩短到一个返回声明(完全放弃条件),但我懒惰。
Brighguy.




邮政发布: 2010年7月22日星期四下午4:37  帖子主题:RE:Monty-Hall问题模型

但是,拆除了门是人们在第一次违反直觉的原因。它也可以创建微妙之处:当蒙蒂有一个选择时,如果他在某些情况下,他可以在2/3上行动。
从上一个显示帖子:   
   指数 -> 编程,Ruby. -> 红宝石提交
查看上一个主题 告诉一个朋友可打印的版本下载主题利率主题订阅本主题私人信息刷新页面 查看下一个主题

11  [ 12 Posts ]
跳到:   


Style:  
搜索: