作者liaommx (Orz)
看板C_Sharp
標題Re: [問題] 亂數產生的方式..
時間Mon Mar 1 11:08:15 2010
最後我直接採用List的比對方法.
先把產生的序列存入List,
然後對List排序, (list.sort)
然後跑
for(i=0;i<List.count-1;i++)
{
if( List[m]==List[m++])
{
writetofile(List[m]);
}
}
這樣,
比起I/O讀取快上很多,
我想我的問題是在於,100萬筆資料,I/O要跑100萬*100萬
而這個方法只需要比對100萬次就好.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.226.154
1F:推 whelp:超過十萬筆資料可能還是要考慮一下搜尋法... 03/01 11:56
2F:→ liaommx:目前使用這方法,最慢大約5分鐘可以完成..XD 03/01 12:23
3F:→ liaommx:歸功於List.sort...:P 03/01 12:23
4F:推 F23ko:我寫的那個,邊產生邊檢查,只要八秒..... 03/01 12:39
5F:→ liaommx:我知道..XD..tree的方法對我來說我還要一點時間消化一下 03/01 12:41
6F:→ liaommx:所以我先寫出個可以用的來用, 03/01 12:41
7F:推 F23ko:當初學tree時我也是一直按F11看了好幾遍才懂 03/01 12:45
8F:→ F23ko:盲點在於.... 一直看同一段程式在跑,人會把它當成同一個 03/01 12:46
9F:→ F23ko:「東西」。事實上,把每個樹節都當成是不同東西來看,就能搞 03/01 12:47
10F:→ F23ko:清楚那個概念了。 03/01 12:48
11F:→ liaommx:非常感謝您,我會找時間看懂他的, 03/01 14:38
12F:推 FAITHY:writetofile是什麼 紀錄重複的亂數嗎@@ 03/01 22:53
13F:→ FAITHY:那如果list[i]==list[i+1]==list[i+2]不是記錄兩次一樣的嗎 03/01 22:55
14F:→ FAITHY:還是你只要記錄重複的個數和數次@@ 03/01 22:58
15F:→ liaommx:我是單純想像,若重複的亂數最多只有兩個 03/02 06:23
16F:→ liaommx:所以你提到的是對的,這段可以再修改.只是太急了XD 03/02 06:24
17F:→ liaommx:程式的主要目的不是產生亂數,而是假設我想的亂數產生方法 03/02 06:25
18F:→ liaommx:不容易產生重複.所以要驗證 03/02 06:25