生成随机字符串的最佳方法是什么?字母表由字母组成,最多有8百万个字符,将使用字符串搜索算法进行测试? Math.random对于基于统计的字符传播的随机性或可靠性仍然可以吗?任何评论都表示赞赏,如果我的想法错了,请跟我说。
答案 0 :(得分:3)
答案 1 :(得分:1)
当然,为什么不呢?实际上,8 MiB并不是那么多。即使糟糕的PRNG也有至少几十亿的时期,Java使用48位的LCG。是的,它应该没问题。
答案 2 :(得分:1)
这完全取决于生成此字符串的目的。如果您要生成字符串以测试搜索算法的性能,那么您可能希望生成“类似英语”的文本,其中包含与典型文档类似的单词分布。
实现这一目标的一种方法是建立一个Markov Chain,从而为每个州生成一个给定的单词;例如“The”然后以一定的概率过渡到新的状态;例如“The” - > “第一”。您可以使用大量示例文本自动生成马尔可夫链,例如Brown Corpus。
甚至更简单,您可以使用特定的语料库(例如布朗语料库)测试您的算法,而不必自己生成任何样本。
答案 3 :(得分:0)
这类公共资源库可以完成这项工作
org.apache.commons.lang.RandomStringUtils
您可以使用方法“随机”
String s = org.apache.commons.lang.RandomStringUtils.random(5, true, false);