Re: [VB6 ] 亂數不重複

看板Visual_Basic作者 (sad jjss)時間18年前 (2005/11/02 16:54), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《lovebandy ( it's my time)》之銘言: : 我是VB新手 : 想寫一個模擬產生賓果遊戲的方格。宣告一個5x5的陣列 : 其中陣列中每個元素為隨機產生(1~25)且產生的數字不可重複 : 麻煩各位大大指點一下囉!! 最直覺的作法是 用一個陣列 box[25] 來記憶曾經產生過的亂數 去儲存每次產生的亂數,然後新產生的亂數就先檢查有沒有儲存過了 有的話重新產生,沒有的話儲存進去,並放置到方格的二維陣列中 25次的迴圈跑完結果也出來了 不過既然是最直覺的作法,所以是不考慮效率的,小程式這樣就可以了 比較好的作法是 設一個陣列 box[25] 當產生過了,就將該元素值設定 (如設成1 box[6]=1) 每次產生亂數後,如果該元素已設定過,則不產生,重新產生 然後沒設定過的-> 設定 -> 放置到方格的二維陣列中 會比較有效率一些,不過除非是網路程式 會多人使用 不然其實差不太多 更好的作法是 同方法二,但是每次產生的亂數範圍遞減, 每次產生的亂數值不是直接數,而是位移值 如產生 7 ,則去取第7個未被設定的亂數 跟前兩個方法比較 差別最多的就是時間使用的穩定性 前面的方法中,當亂數產生已經使用過,只能重新產生 (重擲骰) 所以時間不穩定,而這個方法可以較固定時間 在比較大或是網路環境 (多人同時使用)的需要效率的情況下 建議使用 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.69.52.192
文章代碼(AID): #13Q7wogP (Visual_Basic)
文章代碼(AID): #13Q7wogP (Visual_Basic)