2014-09-22 217 views
0

我想要一個英文單詞詞典,選擇隨機英語單詞。我有一個字典文本文件,我從互聯網上下載了近100萬字,在Clojure中使用這個列表的最佳方式是什麼,因爲大多數情況下我只需要一個隨機選擇的單詞?Clojure詞典詞典

編輯:

要回答的意見,這是一些測試,我可以變成負載測試這就是爲什麼我想要的隨機單詞一個體面的數字,我想訪問速度是最重要的事情。我不想爲此使用數據庫。我最初想到的是一本字典,因爲這是我第一個想到的東西,但我認爲隨機的字母和數字序列足夠好,也許我只是使用UUID作爲字符串。

+0

用索引索引在數據庫中填充一個隨機數? – 2014-09-22 15:06:27

+0

大部分時間你的意思是什麼?你的程序是否運行一次,選擇一個單詞並做它所需要的,或者它是否循環運行(即hangman)?你真的需要1M的話,還是最好只使用相對流行的話? – 2014-09-22 15:27:33

+5

定義「最佳」。在內存消耗方面「最佳」?在查詢速度方面「最好」?在實施的速度/清晰度方面「最佳」? – 2014-09-22 15:35:30

回答

1

將所有單詞讀入Vector,然後調用rand-nth,例如,

(rand-nth all-words) 

蘭特 - 第n使用的底層數據結構的第n個功能和Clojure的載體具有用於基於索引檢索log32N性能。

編輯:這是假設它是針對您的問題中描述的測試環境。更高效的內存方法是使用RandomAccessFile並尋找文件中的隨機位置,直到找到第一個單詞分隔符(例如逗號,EOL),然後讀取下列字節,直到下一個分隔符爲止一個隨機詞。