作者b25459870 (Skyer)
看板Visual_Basic
標題[.NET] 亂數 平均分配問題
時間Mon May 20 11:32:48 2013
Visual Studio 2012
小弟是剛入門的新手
想寫些小遊戲
如何取亂數也算是老問題了
以下是我目前的程式碼
Label1.Text = ""
Dim card As Integer
Dim out(9) As Integer
Dim err As Integer '確認有無錯誤
Randomize()
For i = 1 To 100
card = Int(Rnd() * 10) + 1 '取1~10之亂數
Select Case card '用意是紀錄1~10之出現次數
Case 1
out(0) += 1
Case 2
out(1) += 1
吃掉 占版面
Case 10
out(9) += 1
End Select
Next
For j = 0 To 9
Label1.Text &= out(j) & vbCrLf
Next
小弟初學,所以只能用比較笨的方法測試
如果各位大大有能簡化的方法也可以順便教教小弟
正題...
ramdomize(timer)+rnd是最簡單方便取亂數的方式
但是我發現...他出來的數字並不是非常平均分布
爬文+google
好像滿少對這類的討論....
想請問有沒有更好的寫法,取的亂數更平均分配呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.227.144.10
→ MOONRAKER:你有沒有聽過大數定理 05/20 13:55
→ b25459870:我知道你說的意思 數字越大 結果會越平均 05/20 16:20
→ b25459870:不過在數字小的時候 rnd實在是不平均的誇張... 05/20 16:20
→ MOONRAKER:這是當然的。沒有什麼討論是因為本來就是這樣。 05/20 17:00
→ MOONRAKER:你怎麼測也不會有更好的結果。 05/20 17:03
推 DeathWatch:亂數就是亂數 沒有一定比例的 05/20 17:41
→ b25459870:恩恩~好吧..謝謝各位回覆 05/20 21:05
→ MOONRAKER:如果要保證取完有限集合,那用洗牌法卡實在。 05/21 07:07