Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

請問亂數產生的問題??

0 views
Skip to first unread message

阿強

unread,
Mar 3, 2000, 3:00:00 AM3/3/00
to
如果使用亂數1到10 個亂數不讓它重覆要這樣寫呢?
例如:猜數字遊戲,指1a2b那種,有誰能告訴我呢?
感激不盡,謝謝!!
--
* Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>

認真的電鍋最閃耀

unread,
Mar 4, 2000, 3:00:00 AM3/4/00
to
※ 引述《a24...@cis.nctu.edu.tw (阿強)》之銘言:

> 如果使用亂數1到10 個亂數不讓它重覆要這樣寫呢?
> 例如:猜數字遊戲,指1a2b那種,有誰能告訴我呢?
> 感激不盡,謝謝!!

雖然看不太懂你的問題!
不過不重複的數字我試過幾種
假設是4位數的話
你就給四個變數個別為 個 十 百 千
用迴圈輸入陣列中
然後你只要判別這四個有沒有重複就可以了!!
那不就不會產生重有重複數字的了
例如:
For I = 1 To 9

For J = 0 To 9

Do While (J = I)
J = J + 1
Loop

If J = 10 Then
J = 0
Exit For
End If

For K = 0 To 9

Do While ((K = J) Or (K = I))
K = K + 1
Loop

If K = 10 Then
K = 0
Exit For
End If

For L = 0 To 9

Do While ((L = I) Or (L = J) Or (L = K))
L = L + 1
Loop

If L = 10 Then
L = 0
Exit For
End If

M = M + 1
A = I * 1000 + J * 100 + K * 10 + L
這樣應該就可以了
然後你在把A存入陣列中!
取一個數可重複沒關係!
因為這次是要去當陣列的INDEX取其中的數字出來
不過~~~~~建議你~~~

最快的方法就是用亂數跳!
判別有沒有重複~~有的話重選就好了!
以現在電腦的速度~~不可能讓你等太久的!
只是時間就不能估計了!
--
[1;33m※ Origin: [36m奇摩 大摩域 [37m<telnet://bbs.kimo.com.tw> [m
[1;35m◆ From: [1;32m202.43.72.219 [m

標準的好男人

unread,
Mar 4, 2000, 3:00:00 AM3/4/00
to
把我在台大椰林回覆別人要求 0~4不重複隨機數列的文章
轉貼過來


> 順手寫的,沒編譯試過.....可能會有一些小錯誤....不過方法已經很清楚了....
> #define MaxN 5
> char n[MaxN];
> int iCount;
> void Init(void)
> {
> for (i=0;i<MaxN;i++)
> {
> n[i]=i;
> }
> iCount=MaxN;
> }
> int GetN(void)
> {
> int i=Random(iCount);
> int iResult=n[i];
> n[i]=n[iCount-1];
> iCount--;
> return iResult;
> }


這個演算法產生一個亂數的時間複雜度為 O(1) 就是保證一個單位時間就可以
產生一個數字,不會因為某個數字已經產生過而需要重新產生一個新的。

只要把那個 MaxN 改成你所要的個數
比如改成 52 就是產生 52 個 0~51 不重複的隨機亂數,
可以用來模擬撲克牌發牌,希望對你有所幫助....

《 在 POTRI...@bbs.kimo.com.tw (認真的電鍋最閃耀) 的大作中提到: 》
: ※ 引述《a24...@cis.nctu.edu.tw (阿強)》之銘言:


: > 如果使用亂數1到10 個亂數不讓它重覆要這樣寫呢?
: > 例如:猜數字遊戲,指1a2b那種,有誰能告訴我呢?
: > 感激不盡,謝謝!!

--
[m [1;36m※ 來源:‧蛋捲廣場 bbs.tku.edu.tw‧[FROM: 140.118.31.171] [m

哈哈哈

unread,
Mar 5, 2000, 3:00:00 AM3/5/00
to
※ 引述《a24...@cis.nctu.edu.tw (阿強)》之銘言:
> 如果使用亂數1到10 個亂數不讓它重覆要這樣寫呢?
> 例如:猜數字遊戲,指1a2b那種,有誰能告訴我呢?
> 感激不盡,謝謝!!


用亂數用一個陣列把他紀錄下來..一遇到有重複的就重來一遍..
--
[1;32m※ Origin: [33m晨曦之鄉 [37m<bbs.cyut.edu.tw> [m
[1;31m◆ From: [36mR20-166.cyut.edu.tw [m

0 new messages