VBA中循环的问题
Publici,e1,e2,x,w1,w2,h1,h2AsIntegerFunctiona()z=Int((10*Rnd)+1)Ifz<5Thene1=e1+1Calla...
Public i, e1, e2, x, w1, w2, h1, h2 As Integer
Function a()
z = Int((10 * Rnd) + 1)
If z < 5 Then
e1 = e1 + 1
Call a1
ElseIf z >= 5 Then
e2 = e2 + 1
Call a
End If
End Function
Function a1()
z1 = Int((10 * Rnd) + 1)
If z1 < 4 Then
w1 = w1 + 1
Call a2
ElseIf z1 >= 4 Then
w2 = w2 + 1
Call a1
End If
End Function
Function a2()
z2 = Int((10 * Rnd) + 1)
If z2 < 3 Then
h1 = h1 + 1
ElseIf z2 >= 4 Then
h2 = h2 + 1
Call a2
End If
End Function
Sub marco()
e1 = 0
e2 = 0
w1 = 0
w2 = 0
h1 = 0
h2 = 0
For i = 1000 To 1 Step -1
Call a
Next
Range("E17") = e1
Range("E18") = e2
Range("E19") = w1
Range("E20") = w2
Range("E21") = h1
Range("E22") = h2
End Sub
为什么 这2个地方总是1000? 展开
Function a()
z = Int((10 * Rnd) + 1)
If z < 5 Then
e1 = e1 + 1
Call a1
ElseIf z >= 5 Then
e2 = e2 + 1
Call a
End If
End Function
Function a1()
z1 = Int((10 * Rnd) + 1)
If z1 < 4 Then
w1 = w1 + 1
Call a2
ElseIf z1 >= 4 Then
w2 = w2 + 1
Call a1
End If
End Function
Function a2()
z2 = Int((10 * Rnd) + 1)
If z2 < 3 Then
h1 = h1 + 1
ElseIf z2 >= 4 Then
h2 = h2 + 1
Call a2
End If
End Function
Sub marco()
e1 = 0
e2 = 0
w1 = 0
w2 = 0
h1 = 0
h2 = 0
For i = 1000 To 1 Step -1
Call a
Next
Range("E17") = e1
Range("E18") = e2
Range("E19") = w1
Range("E20") = w2
Range("E21") = h1
Range("E22") = h2
End Sub
为什么 这2个地方总是1000? 展开
展开全部
“e17”=e1,而在function a中 z<5时e1=e1+1,z>=5时梯归执行a函数,这样最后肯定是z<5(因为z不小于5,梯归会一直下去),这样e1总是=1000。同理e19总是=1000,e21本来也同理总是=1000,不过你在function a2中写错了,z2>=4(应该为z2>=3),所以当z2=3时既不<3,也不>=4,这时候function a2运行结束。
还有1个错误,e17应该是成功的次数,而不是失败的次数。
总是等于1000是对的,这表示的意义是最终1000道具强化成功。程序的思路就是使1000道具强化成功,算出需要失败多少次,从而得到强化成功的几率。
另外还有1个疑问,你设定的条件是强化失败退回到1级,所以我认为在function a1中 当 z1>=4(即强化失败)时应该 call a,而不是 a1。同理function a2 中 也是 call a。当然也许你的意思是退回前一级。
还有1个错误,e17应该是成功的次数,而不是失败的次数。
总是等于1000是对的,这表示的意义是最终1000道具强化成功。程序的思路就是使1000道具强化成功,算出需要失败多少次,从而得到强化成功的几率。
另外还有1个疑问,你设定的条件是强化失败退回到1级,所以我认为在function a1中 当 z1>=4(即强化失败)时应该 call a,而不是 a1。同理function a2 中 也是 call a。当然也许你的意思是退回前一级。
追问
那这样的程序怎么修改成 在只强化1千次的情况下 算出 有多少次1级强化成功与1级强化失败 与2级强化成功与2级强化失败 以及3级强化成功与3级强化失败,而不是现在强化成功次数一定都是1000次
追答
在 function a ,a1,a2 的第一行 加一句 if e1+e2+w1+w2+h1+h2=1000 then exit function
以及Sub marco()的for循环里call a下一行 加一句 if e1+e2+w1+w2+h1+h2=1000 then exit for
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询