Re: [ASP ] 想寫個像樂透的程式但是遇到了瓶頸
※ 引述《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
推
03/30 12:45, , 1F
03/30 12:45, 1F
→
03/30 23:56, , 2F
03/30 23:56, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 5 篇):