作者xtimer ()
看板Visual_Basic
标题Re: [ASP ] 想写个像乐透的程式但是遇到了瓶颈
时间Sun Mar 30 11:45:15 2008
※ 引述《karta2506968 (天冷心更冷)》之铭言:
: 我想写个像乐透模式差不多的程式
: 但是没办法像乐透一样6个号码
: 在加一个特别号,我一直都很烦恼,请各位高手告诉我加上一个特别号要怎麽写
: 程式码如下
: Module Module1
: Sub Main()
: Dim i, n, x As Long
: Console.WriteLine("乐透")
: For i = 1 To 6
: Randomize()
: n = Int(Rnd() * 42)
: Console.WriteLine("中奖号码" & n)
: Next
: Console.ReadLine()
: End Sub
: End Module
我给你我写的
不过我写的是大乐透
49取7
-----------------------------------------------------------
Module Module1
Sub Main()
Dim i%, y%, y1%, y2%, y3%, y4%, y5%, y6%, y7%
For y = 1 To 7
If y < 7 Then
Console.Write("大乐透号码为=")
Else
Console.Write("特别号为=")
End If
Call newrnd(i)
If y = 1 Then y1 = i
If y = 2 Then y2 = i
If y = 3 Then y3 = i
If y = 4 Then y4 = i
If y = 5 Then y5 = i
If y = 6 Then y6 = i
If y = 7 Then y7 = i
L2: If y2 = y1 Then
Call newrnd(i)
y2 = i
GoTo L2
ElseIf y3 = y2 Or y2 = y1 Then
Call newrnd(i)
y3 = i
GoTo L2
ElseIf y4 = y3 Or y3 = y2 Or y2 = y1 Then
Call newrnd(i)
y4 = i
GoTo L2
ElseIf y5 = y4 Or y4 = y3 Or y3 = y2 Or y2 = y1 Then
Call newrnd(i)
y5 = i
GoTo L2
ElseIf y6 = y5 Or y5 = y4 Or y4 = y3 Or y3 = y2 Or y2 = y1 Then
Call newrnd(i)
y6 = i
GoTo L2
ElseIf y7 = y6 Or y6 = y5 Or y5 = y4 Or y4 = y3 Or y3 = y2 Or y2 = y1 Then
Call newrnd(i)
y7 = i
GoTo L2
End If
Console.WriteLine(i)
Next
Console.ReadLine()
End Sub
Sub newrnd(ByRef I)
Randomize()
l1: I = Int(Rnd() * 49)
If I = 0 Then
GoTo l1
End If
End Sub
End Module
-----------------------------------------------------------
以上是乱七八糟写法
土法链钢
一个一个比较 让它不重覆 不过 对应课本用了一个副程式
而下面这个 是我同学写的
不过有个地方我一直看不懂
给你参考
顺便请强者替我解答我看不懂的地方
-----------------------------------------------------------
Module Module1
Sub Main()
Dim array(6) As Integer
Dim i, x As Integer
For i = 0 To 6
Randomize()
array(i) = (Rnd() * 48) + 1
For x = 0 To 6
If array(i) <> array(x) Then
End If
array(i) = (Rnd() * 48) + 1
Next
Next
Console.WriteLine("乐透开奖号码")
Console.WriteLine("第一个号码为" & vbTab & array(0))
Console.WriteLine("第二个号码为" & vbTab & array(1))
Console.WriteLine("第三个号码为" & vbTab & array(2))
Console.WriteLine("第四个号码为" & vbTab & array(3))
Console.WriteLine("第五个号码为" & vbTab & array(4))
Console.WriteLine("第六个号码为" & vbTab & array(5) & vbCrLf)
Console.WriteLine("特别号为" & vbtab &array(6))
Console.ReadLine()
End Sub
End Module
-----------------------------------------------------------
看不懂的地方在中间这一段
For x = 0 To 6
If array(i) <> array(x) Then
End If
array(i) = (Rnd() * 48) + 1
Next
我知道 他设了一个阵列
用for next去对应阵列位置
然後 用x去比较新旧数字是否重复
但是
为何他if 数字不一样 then後面却是空的
然後再执行一次重取乱数
而我改成
For x = 0 To 6
If array(i) = array(x) Then
array(i) = (Rnd() * 48) + 1
end if
Next
就不行~"~
请知道的大大替我解答一下
谢谢
给原po 这是大乐透
要记得把数字样本改回你须要的数字
不然乐透出现49....老师肯定说你抄的XD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.143.39.42
1F:推 fumizuki:If 里面应该是 Exit For 03/30 12:45
2F:→ xtimer:真是一语点醒梦中人~我懂了~^^ 谢谢 03/30 23:56