請教visual basic 6問題

2007-11-02 1:05 am
想請問各位大大,如果把
Randomize
i = Int(RND() * 9 + 0)
內之i值每次輸出但不重覆

回答 (3)

2007-11-08 6:42 pm
✔ 最佳答案
我自己亦寫了一個generate 六合彩的程式. 要generate 出來的random number 不重覆, 我用了以下的簡單方法:
1. 加多一個 array, d[ ] 來記錄已 generate 出來的 number, 如 generate 出 3, 則 set d[3]=1, 如generate 出 5, 則 set d[5]=1
2. generate 出 一個 number x 後, check d[x] 是否等於1; 若是, 則 x 已出現過, 要 re-generate 新number (或所有number 已出現完); 若否, 則印出該 x , 並 set d[x]=1.
2007-11-03 2:28 pm
1. n = 9

2. 將數字放進一個 array 內, 如:
for i = 0 to n
array[i] = i + 1
next i

3. 隨機抽取一個 index, 和 array 尾的數交換:
for i = n to 0 step -1
idx = Int(RND() * (i + 1))
tmp = array[i]
array[i] = array[idx]
array[idx] = tmp
next i

4. array 內的數字沒有重覆地隨機排放, 用這個方法只做 2 個 loop, 運算複雜度是 2n, 用 loop 上 loop 的方法, 運算複雜度(不計check到重複的情況下)是 n^2
參考: me
2007-11-02 8:35 am
你要用array,是a[0],a[1],a[2],a[n-1].... n是你要set多少個變數
把第一次的結果放入a[0],然後如此類推
最後把結a[0]和a[1]比校(如只有兩個數),如重覆訧寫個Loop,要它再做.

當第二個變數時出現時要檢查 a[0]=a[1]
當有三個變數時出現時要檢查 a[0]=a[2] a[1]=a[2]
當有四個變數時出現時要檢查 a[0]=a[3] a[1]=a[3] a[2]=a[3]
..........................................................................................................
.......................................................................................................................
.................................................................................................................................


收錄日期: 2021-04-13 21:01:56
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20071101000051KK01944

檢視 Wayback Machine 備份