全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2000
推到 Plurk!
推到 Facebook!

亂數產生

 
tzuhsun
一般會員


發表:7
回覆:8
積分:3
註冊:2007-03-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-03-25 22:04:08 IP:125.229.xxx.xxx 訂閱
我想請問如何寫
用一個副程式產生介於0~50000的亂數,
然後在主程式使用這個副程式,
產生1000個亂數整數放入陣列中?
PS:所產生的1000個整數盡量不能重覆,而且0~50000不能使用%那該怎做QQ?


Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-03-25 22:19:23 IP:211.22.xxx.xxx 未訂閱
查一下 random(), randomize(),搜尋一下站內有不少範例~
http://delphi.ktop.com.tw/board.php?cid=168&fid=912&tid=38176
tzuhsun
一般會員


發表:7
回覆:8
積分:3
註冊:2007-03-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-03-25 23:43:31 IP:125.229.xxx.xxx 訂閱
謝謝你
我會先去看看~^^
tzuhsun
一般會員


發表:7
回覆:8
積分:3
註冊:2007-03-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-03-26 00:23:53 IP:125.229.xxx.xxx 訂閱
我看了
可是沒我要的重點一一
我要的是不能使用%
還有50000她是一個破表的直
我記的沒錯的話
rand好像只到3萬多
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-03-26 11:47:06 IP:211.22.xxx.xxx 未訂閱
你查了線上說明嗎?
function Random [ ( Range: Integer) ]; //可以是個Integer。
Random returns a random number within the range 0 <= X < Range. If Range is not specified, the result is a real-type random number within the range。
不要忘記先呼叫 Randomize。
tzuhsun
一般會員


發表:7
回覆:8
積分:3
註冊:2007-03-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-03-26 19:43:18 IP:125.229.xxx.xxx 訂閱
rand()回傳值最大為 32767 
5萬超過...
如果用2個亂數相加產生機率又不夠平均
EX:0 =0 0
2=0 2 1 1 2 0
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-03-26 19:48:57 IP:59.124.xxx.xxx 未訂閱
前輩請你用的是int random(int num);
而不是 int rand(void);
tzuhsun
一般會員


發表:7
回覆:8
積分:3
註冊:2007-03-25

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-03-26 20:40:03 IP:125.229.xxx.xxx 訂閱
ㄜㄜ...
抱歉抱歉
我沒說清楚>"<
被限定用rand,srand來解決...
而且不能使用%...OTZ
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-03-27 17:37:26 IP:61.64.xxx.xxx 訂閱
50000

動動你的大腦,問題就可以節決
首先,有很多函式可以作亂數
既然你被限制,哪就利用這個限制

反正 rand() random() 做出來的都是有序的亂數
我們就把 50000 分成 50 個 zone

這樣,就有 50 * 1000 ,符合你的需求了吧

先用 rand () 取 base 1 ~ 50
再用 rand() 取 target 1~1000
例如 base = 43
target = 865

那亂數就是 43865,其實就是分斷取亂數而已,至於重複與否,用陣列€去判斷,反正已經分斷,陣列也不會很大

馬上解決你的問題

要盡量不同,哪就多多換 seed, seed 可以由滑鼠,螢幕,鍵盤來增加亂度,反正就是隨便找一個值就是了

至於分組,就看你爽,要分幾組,幾層都可以
我們大家都來將腦筋放活一點,是我們在用電腦,不是電腦在用我們
tzuhsun
一般會員


發表:7
回覆:8
積分:3
註冊:2007-03-25

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-03-27 18:31:05 IP:125.229.xxx.xxx 訂閱
對齁~~~
哈哈
感謝大大
之前只想到25000 25000所產生的不平均
卻沒想到取位數來相加
真是太感謝大大哩~

系統時間:2024-05-03 19:41:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!