Clojure词典词典

问题描述:

我想要一个英文单词词典,选择随机英语单词。我有一个字典文本文件,我从互联网上下载了近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

将所有单词读入Vector,然后调用rand-nth,例如,

(rand-nth all-words) 

兰特 - 第n使用的底层数据结构的第n个功能和Clojure的载体具有用于基于索引检索log32N性能。

编辑:这是假设它是针对您的问题中描述的测试环境。更高效的内存方法是使用RandomAccessFile并寻找文件中的随机位置,直到找到第一个单词分隔符(例如逗号,EOL),然后读取下列字节,直到下一个分隔符为止一个随机词。