看板 Visual_Basic 關於我們 聯絡資訊
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