【急】如何在pascal用file中使用random?

2011-11-25 10:35 pm
如果係turbo pascal,用file handling去由txt file拎資料出黎

咁我點先可以將d資料可以係random format咁抽出黎?

定係將所有資料抽晒出黎,再random呢?

點先可以唔重複抽到同一樣野?

希望可以有sample,感謝

回答 (2)

2011-11-26 8:34 am
✔ 最佳答案
(1)text file每行係會唔同長,無法由定點位讀入,只能以array of string去存放。如果你用free pascal,有個TstringList好易用。otherwise,用一個loop去把所有行讀入一個array,亦同時找到總行數。
(2)隨機抽一行,只要用random(totalLine),就會抽出一個數。注意回傳數係0至totalLine-1,即係第一個係0。如果第一個係1,random()+1就得。
(3)不重複,方法一,用一個array記住抽過乜數,要一個新的時,要check一次有冇出現過,有就要重抽。不好的地方,如果你最終會抽出大部份,你後期的loop會可能停好耐,因為抽極都重複的機會大。如果最終係全部都要,呢個方法一定行唔通
(3B)方法二,抽出一個random後,把用過的行從array刪去,亦要totalLine-1。下次再抽時所有行都係未用過。不好的地方係,如果你個 list 好長,刪去一個可能要一點時間
舉例,如果你有1000條問題,只會抽10條問,方法1好o的。但如果有100個人玩,最後會用晒o的問題,要用方法二。
2011-11-25 11:38 pm
建議先讀取所有資料並存放到Array中,再另建一Array來儲存已抽出的資料。
重覆產生Random Number,如該Random Number那格的資料已經被抽出,便再返回上一步並產生另一Random Number;列出被抽中那格的資料後,便印出資料Array中資料並於"已抽出"的Array中記下已被抽出的資料格;重覆以上的步驟直至所有的資料都被抽出來。


收錄日期: 2021-04-26 11:33:51
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20111125000051KK00322

檢視 Wayback Machine 備份