台灣最大程式設計社群網站
線上人數
1032
 
會員總數:242761
討論主題:187725
歡迎您免費加入會員
討論區列表 >> ASP >> 那裡錯誤?? 取亂數
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
那裡錯誤?? 取亂數
價值 : 200 QP  點閱數:268 回應數:3

樓主

Oscar
初學者
19 14
562 55
發送站內信

捐贈 VP 給 Oscar
請教先進.

設計一組不重複亂數. 但如何做. 都會有重複發生. 程式那裡錯了.


for i=0 to 4
r=fix(rnd*randomUpperNumber)
q_data(i)=r
next
'比對陣列有沒有重複
for L=0 to ubound(q_data)
rdata=q_data(L)
for j=0 to ubound(q_data)
if cint(rdata)=q_data(j) then
r1=fix(rnd*randomUpperNumber)
q_data(j)=r1
J=0
end if
next
next




搜尋相關Tags的文章: [ asp ] , [ 亂數 ] ,
本篇文章發表於2018-01-13 22:31
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

小魚
檢舉此回應
你把它改成r1,
但是你沒有再判斷r1跟其他的有沒有重複,

其實你這方法不是很好,
應該在產生的時候就要判斷,
沒有重複才繼續進行迴圈,
但如果數字大的話這也不是好方法,
因為有可能會一直發生重複的情況,
導致執行時間拉很長,

其中一種方式是產生一組包含所有數字的一個陣列(用迴圈產生即可)
然後用亂數取出其中一個,
然後將那個數從陣列中移除,
再用亂數取下一個,
一直重複這樣的動作即可。
(這有點像撲克牌的概念)

我發現另一個問題,
小寫的j跟大寫的J應該被判斷是不同變數吧...
本篇文章回覆於2018-01-13 23:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Oscar
捐贈 VP 給 Oscar 檢舉此回應
謝謝小魚...

1.的確. 沒有注意到大小寫的問題.
2.程式分二段. 第一段是放亂數資料至陣列中. 第二段目的在陣列中如果有重複資料. 就更新亂數. 再重新檢查一次.
3.您的意思是...應該在產生的時候就要判斷,沒有重複才繼續進行迴圈.



這樣嗎??
本篇文章回覆於2018-01-14 21:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

小魚
檢舉此回應
你看漏了一段,
我是說這樣不是好方法,

不過我對VB不熟,
不確定j=0這段會不會有效果...
本篇文章回覆於2018-01-15 00:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.