找回密码
 加入
搜索
查看: 4538|回复: 6

[效率算法] 关于模拟抽奖

  [复制链接]
发表于 2010-11-26 11:46:07 | 显示全部楼层 |阅读模式
本帖最后由 蜘蛛抱蛋 于 2010-11-26 12:35 编辑

问题很简单,某某节目上,一嘉宾猜测某奖品价格,规定次数内猜中就可以把奖品抱回家。如何才能使胜率最大?
下面是两种方法比:
$p = InputBox("真实", "输入整数", "640", " M3")
$t = InputBox("价格区间", "输入两个整数作为最初的价格范围,用空格间隔开", "0 800")
$price = StringSplit($t, Chr(32), 2)
Dim $i = 0,$try = 0,$try2 = 0
While $try <> $p  ;每次取平均值
        $i += 1
        If BitAND($price[0]+$price[1], 1) = 1 Then
          $try = Int(($price[0] + $price[1])/2)+Random(0,1,1)
    Else
          $try = Int(($price[0] + $price[1])/2)
  EndIf

        ConsoleWrite($try & Chr(32))
        If $try>$p Then
        ConsoleWrite("高了" & @CRLF)
        $price[1] = $try
        EndIf
        If $try<$p Then 
        ConsoleWrite("低了" & @CRLF)
        $price[0] = $try
        EndIf
WEnd
MsgBox(0,"答对了","共猜" & $i & "次")

While $try2 <> $p  ;完全随机
        $i += 1
    $try2 = Random($price[0], $price[1], 1)
        ConsoleWrite($try2 & Chr(32))
        If $try2>$p Then
        ConsoleWrite("高了" & @CRLF)
        $price[1] = $try2
        EndIf
        If $try2<$p Then 
        ConsoleWrite("低了" & @CRLF)
        $price[0] = $try2
        EndIf
WEnd
MsgBox(0,"答对了","共猜" & $i & "次")
问题变化一下,猜价格改为抽奖,只有两次机会,第一次猜完,主持人从剩余的箱子去掉一个错误答案。此时,你可以选择换一个猜,或者不换。那么得奖的概率是否有所不同?
游客,如果您要查看本帖隐藏内容请回复
 楼主| 发表于 2010-11-26 12:02:37 | 显示全部楼层
第二个代码运行的很卡,得出结果用了30多秒,各位能看看是哪儿出了问题吗
发表于 2010-11-26 14:13:41 | 显示全部楼层
二分法解决应该效率最高吧。
发表于 2010-11-27 10:18:47 | 显示全部楼层
呵呵挺有意思哈
发表于 2010-11-27 11:38:51 | 显示全部楼层
让别人猜应该这样写吧 你这是电脑猜了
$p = InputBox("真实", "输入整数", "640")
$i = 0
While 1
        $t = InputBox("价格", "请输入你认为的价格", "")
        $i += 1
        If $t < $p Then _TrayTip("低了")
        If $t > $p Then _TrayTip("高了")
        If $t = $p Then
                MsgBox(0, "答对了", "共猜" & $i & "次!")
                ExitLoop
        EndIf
        If $i > 10 Then
                MsgBox(0, "很可惜", "您10次都没猜中!")
                ExitLoop
        EndIf
WEnd

Func _TrayTip($info)
        TrayTip("您输入的价格和真实价格相比", $info, 3)
EndFunc   ;==>_TrayTip

评分

参与人数 1贡献 +1 收起 理由
lynfr8 + 1

查看全部评分

发表于 2010-12-12 12:46:02 | 显示全部楼层
顶一个
先看看,能不能用
发表于 2019-10-20 14:49:45 | 显示全部楼层
看看隐藏的什么
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 16:10 , Processed in 0.076479 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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