Clojure词汇词典

Clojure词汇词典,clojure,Clojure,我想要一本可用的英语单词词典,随机挑选英语单词。我有一个从网上下载的字典文本文件,里面有将近100万个单词,考虑到大多数时候我只需要一个随机选择的单词,在Clojure中使用这个列表的最佳方式是什么 编辑: 为了回答这些评论,这是针对一些测试的,我可能会将其转化为负载测试,这就是为什么我需要大量的随机单词,我想访问速度是最重要的。我不想为此使用数据库。我最初想到字典,只是因为这是我脑海中浮现的第一件事,但我认为字母和数字的随机序列就足够了,也许我会用UUID作为字符串。将所有单词读入向量,然后调

我想要一本可用的英语单词词典,随机挑选英语单词。我有一个从网上下载的字典文本文件,里面有将近100万个单词,考虑到大多数时候我只需要一个随机选择的单词,在Clojure中使用这个列表的最佳方式是什么

编辑:


为了回答这些评论,这是针对一些测试的,我可能会将其转化为负载测试,这就是为什么我需要大量的随机单词,我想访问速度是最重要的。我不想为此使用数据库。我最初想到字典,只是因为这是我脑海中浮现的第一件事,但我认为字母和数字的随机序列就足够了,也许我会用UUID作为字符串。

将所有单词读入向量,然后调用,例如

rand nth对底层数据结构使用nth函数,Clojure Vectors对基于索引的检索具有log32N性能


编辑:这是假设它适用于您在问题中描述的测试环境。一种更节省内存的方法是使用并查找单词文件中的随机位置,读取直到找到第一个单词分隔符(例如逗号、EOL),然后读取以下字节,直到下一个分隔符为您提供一个随机单词

在数据库中填充一个有序索引,然后选择一个随机数?大多数情况下你是什么意思?您的程序是否运行一次,选择一个单词并执行它所需的操作,还是在循环中运行(即hangman)?你真的需要一百万个词吗,还是最好只使用比较流行的词?定义“最佳”。在内存消耗方面“最佳”?在查找速度方面“最佳”?就实现的速度/清晰度而言,“最佳”?看看Clojure中获取一个随机单词的速度有多慢,如果出于您的目的,它的速度太慢,我想,把它推到postgres中并查询它。在不知道自己在做什么的情况下,很难提出建议。
(rand-nth all-words)