找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
尊貴會員無限下載附件伊莉需要你的贊助和支持搞笑、娛樂、精彩的影片讓你看
海賊王蘿莉mega無碼神奇寶貝259luxugd中文
牧場物語真凜anal把酒話桑mkbd 127mg自慰

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁]怪物轉生 Re:Mons

(4月新番)[繁]神明渴

(4月新番)[繁]搖曳露

[繁]怪獸八號02-

[繁]戰隊大失格03-

[繁]蔚藍檔案03-
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 3485|回復: 3
打印上一主題下一主題

[求助]如何抽完號後進行第二輪[複製鏈接]

Rank: 2Rank: 2

帖子
7
積分
333 點
潛水值
1535 米
跳轉到指定樓層
樓主
發表於 2015-6-25 05:32 PM|只看該作者|倒序瀏覽
本帖最後由 fmp10273 於 2015-6-26 09:32 AM 編輯

同上,最近要做類似範圍內抽號碼的程式..
  1. Dim x As Integer
  2.         Static I As Integer
  3.         Randomize()
  4.         I = I + 1
  5.         If TextBox2.Text = "" Then
  6.             MsgBox("請輸入參加人數")
  7.         Else
  8.             x = Int((Rnd() * TextBox2.Text)) + 1
  9.             Label1.Text = Str(x)
  10.             Label2.Text = I
  11.             TextBox1.Text &= Str(x) & vbCrLf
  12.         End If
複製代碼



抽出的號碼顯示在TextBox1裡...但抽出的號碼還要在做第二輪抽號..
如何從TextBox1裡的指定號碼再抽出裡面的隨機號?




...
瀏覽完整內容,請先 註冊登入會員
分享分享0收藏收藏0支持支持0
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。

使用道具檢舉

Rank: 2Rank: 2

帖子
241
積分
299 點
潛水值
22810 米
頭香
發表於 2015-6-26 11:18 AM|只看該作者
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。
我個人的想法會是, 第一輪的結果作為Array或List, 第二輪抽號碼, 以index為範疇, 輸出時再將index套入第一輪的結果.

使用道具檢舉

Rank: 2Rank: 2

帖子
7
積分
333 點
潛水值
1535 米
3
發表於 2015-6-27 05:05 PM|只看該作者
本帖最後由 fmp10273 於 2015-6-29 05:57 PM 編輯

陣列是可以取前10個了..但陣列亂數就不知該怎樣用了
  1. Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
  2.         Dim a(100) As Integer
  3.         Dim r(100) As Integer
  4.         Dim i As Integer
  5.         Dim j As Integer
  6.         Randomize()
  7.         Dim t As Integer = TextBox2.Text
  8.         For i = 1 To t
  9.             a(i) = i
  10.         Next i
  11.         For i = t To 1 Step -1
  12.             j = Int(Rnd() * i) + 1
  13.             r(i) = a(j)
  14.             a(j) = a(i)
  15.         Next i
  16.         For i = 1 To t
  17.             TextBox1.Text &= r(i) & vbCrLf
  18.         Next i
  19.         For i = 1 To 50
  20.             myArray(i) = r(i)
  21.             TextBox4.Text &= myArray(i) & vbCrLf
  22.         Next
  23.     End Sub

  24.     Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
  25.         Dim i As Integer
  26.         Randomize()
  27.         For i = 1 To 10
  28.             myA(i) = myArray(i)
  29.             TextBox3.Text &= myA(i) & vbCrLf
  30.         Next
  31.     End Sub

  32.     Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
  33.         Dim a(10) As Integer
  34.         Dim r(10) As Integer
  35.         Dim i As Integer
  36.         Dim j As Integer
  37.         Dim k As String
  38.       
  39.         For i = 1 To 10
  40.             myA(i) = i
  41.         Next i
  42.         For i = 10 To 1 Step -1
  43.             j = Int(Rnd() * i) + 1
  44.             myA(i) = myA(j)
  45.             myA(j) = myA(i)
  46.         Next i
  47.         For i = 1 To 10
  48.             TextBox3.Text &= myA(i) & vbCrLf
  49.         Next i


  50.     End Sub
複製代碼

下載: 訪客無法瀏覽下載點,請先 註冊登入會員
...
瀏覽完整內容,請先 註冊登入會員
附件: 你需要登錄才可以下載或查看附件。沒有帳號?註冊
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。

使用道具檢舉

Rank: 2Rank: 2

帖子
541
積分
212 點
潛水值
13707 米
4
發表於 2015-7-1 02:40 PM|只看該作者
本帖最後由 rr09192084 於 2015-7-1 02:45 PM 編輯
  1. Public Class Form1

  2.     REM 宣告三個System.Collections.ArrayList類別的容器來放置亂數號碼
  3.     Private arrayA As System.Collections.ArrayList = New System.Collections.ArrayList()
  4.     Private arrayB As System.Collections.ArrayList = New System.Collections.ArrayList()
  5.     Private arrayC As System.Collections.ArrayList = New System.Collections.ArrayList()

  6.     REM </summary>
  7.     REM 產生不重複的亂數
  8.     REM </summary>
  9.     REM <param name="intLower"></param>產生亂數的範圍下限
  10.     REM <param name="intUpper"></param>產生亂數的範圍上限
  11.     REM <param name="intNum"></param>產生亂數的數量
  12.     REM <param name="isSort"></param>是否排序,(這個參數可省略,預設值是否)
  13.     Private Function MakeRand(intLower As Integer, intUpper As Integer, _
  14.                               intNum As Integer, Optional isSort As Boolean = False) _
  15.                               As System.Collections.ArrayList
  16.         Dim arrayRand As New System.Collections.ArrayList()
  17.         Dim random As New System.Random()
  18.         Dim intRnd As Integer
  19.         While arrayRand.Count < intNum
  20.             intRnd = random.[Next](intLower, intUpper + 1)
  21.             If Not arrayRand.Contains(intRnd) Then
  22.                 arrayRand.Add(intRnd)
  23.             End If
  24.         End While
  25.         If isSort Then
  26.             arrayRand.Sort()
  27.         End If
  28.         Return arrayRand
  29.     End Function

  30.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  31.         REM <<<<<第一輪抽獎程式>>>>>

  32.         REM 先清空容器
  33.         arrayA.Clear()
  34.         arrayB.Clear()

  35.         REM 再從1到500號中抽出30個中獎號碼放到 arrarA 中
  36.         arrayA = MakeRand(1, 500, 30)

  37.         REM 清空文字框
  38.         TextBox1.Clear()
  39.         TextBox2.Clear()
  40.         TextBox3.Clear()

  41.         REM 因為 System.Collections.ArrayList 這個類別容器第一個元素索引是從 0 開始,所以 arrayA 的索引值要從 0 到 29
  42.         REM 我們之前取30個中獎號碼,所以arrayA.Count = 30,再減掉1就是29了
  43.         For i As Integer = 0 To arrayA.Count - 1
  44.             REM 把30個抽出的號碼放到TextBox1中
  45.             TextBox1.Text += CStr(arrayA.Item(i)) + vbCrLf
  46.             REM 再把前10個號碼分別放到 TextBox2 和 arrayB 中(這就是第一輪的中獎號碼)
  47.             If i < 10 Then
  48.                 TextBox2.Text += CStr(arrayA.Item(i)) + vbCrLf
  49.                 arrayB.Add(arrayA.Item(i))
  50.             End If
  51.         Next
  52.     End Sub

  53.     Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  54.         REM <<<<<第二輪抽獎程式>>>>>

  55.         If arrayB.Count = 0 Then
  56.             REM 如果沒有第一輪抽獎,則第二輪抽獎無效
  57.             Return
  58.         End If

  59.         REM 先清空容器
  60.         arrayC.Clear()

  61.         REM 不要忘記 System.Collections.ArrayList 這個類別容器第一個元素索引是從 0 開始
  62.         REM 所以要從 0 到 arrayB.Count - 1 來取得 arrayB 索引值
  63.         REM 下面這一行程式就是從第一輪中獎號碼中再抽出3個第二輪中獎的序號
  64.         arrayC = MakeRand(0, arrayB.Count - 1, 3)

  65.         REM 清空文字框
  66.         TextBox3.Clear()

  67.         REM 把第二輪中獎的3個號碼放到 TextBox3 中
  68.         For i As Integer = 0 To arrayC.Count - 1
  69.             REM 利用剛剛抽出的 3 個序號從 arrayB 中取出 3 個號碼並放到 TextBox3 中
  70.             TextBox3.Text += CStr(arrayB.Item(CInt(arrayC.Item(i)))) + vbCrLf
  71.         Next
  72.     End Sub

  73. End Class
複製代碼
我個人建議應該把 "亂數" 這件事情單獨來處理
所以我參考網路上的範例改寫一個MakeRand函數
這個函數我不做註解
希望你可以自行參閱並且去了解它...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部