- 最後登錄
- 2024-5-12
- 在線時間
- 8417 小時
- 註冊時間
- 2007-6-16
- 閱讀權限
- 95
- 精華
- 0
- UID
- 1564802
- 帖子
- 855
- 積分
- -6 點
- 潛水值
- 55999 米
| 本帖最後由 jack810216 於 2012-12-24 06:18 PM 編輯
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Label1.Text = ""
- Dim rnd As New Random
- Dim t(50) As Byte
- Dim sum(50) As Long
- Dim rnd_tmp As Byte
- Dim tmp As Byte
- For k = 1 To 10000
- For n = 1 To 50
- t(n) = n
- Next
- For n = 1 To 7
- rnd_tmp = rnd.Next(1, 51)
- tmp = t(n)
- t(n) = t(rnd_tmp)
- t(rnd_tmp) = tmp
- Next
- For n = 1 To 7
- sum(t(n)) += 1
- Next
- Next
- For n = 1 To 50
- Label1.Text &= n & " : " & sum(n) & vbNewLine
- Next
- End Sub
複製代碼- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Label1.Text = ""
- Dim rnd As New Random
- Dim t(50) As Byte
- Dim sum(50) As Long
- Dim tmp As Byte
- Dim x As Byte
- For i = 1 To 10000
- x = 0
- For n = 1 To 50
- t(n) = n
- Next
- While x < 7
- tmp = rnd.Next(1, 51)
- If t(tmp) <> 0 Then
- t(tmp) = 0
- sum(tmp) += 1
- x += 1
- End If
- End While
- Next
- For n = 1 To 50
- Label1.Text &= n & " : " & sum(n) & vbNewLine
- Next
- End Sub
複製代碼 上面的應該是板主說的方法吧?
會有明顯的機率差
下面的是普通的方法就不會
我想是交換的問題吧
試了一下 改成這樣就沒問題了...- rnd_tmp = rnd.Next(n, 51)
複製代碼 ... |
|