关于模拟抽奖
本帖最后由 蜘蛛抱蛋 于 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+$price, 1) = 1 Then
$try = Int(($price + $price)/2)+Random(0,1,1)
Else
$try = Int(($price + $price)/2)
EndIf
ConsoleWrite($try & Chr(32))
If $try>$p Then
ConsoleWrite("高了" & @CRLF)
$price = $try
EndIf
If $try<$p Then
ConsoleWrite("低了" & @CRLF)
$price = $try
EndIf
WEnd
MsgBox(0,"答对了","共猜" & $i & "次")
While $try2 <> $p;完全随机
$i += 1
$try2 = Random($price, $price, 1)
ConsoleWrite($try2 & Chr(32))
If $try2>$p Then
ConsoleWrite("高了" & @CRLF)
$price = $try2
EndIf
If $try2<$p Then
ConsoleWrite("低了" & @CRLF)
$price = $try2
EndIf
WEnd
MsgBox(0,"答对了","共猜" & $i & "次")问题变化一下,猜价格改为抽奖,只有两次机会,第一次猜完,主持人从剩余的箱子去掉一个错误答案。此时,你可以选择换一个猜,或者不换。那么得奖的概率是否有所不同?
**** Hidden Message ***** 第二个代码运行的很卡,得出结果用了30多秒,各位能看看是哪儿出了问题吗 二分法解决应该效率最高吧。 呵呵挺有意思哈 让别人猜应该这样写吧 你这是电脑猜了$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]