如何在Java中生成伪随机"可读"字符串?

Jar*_*red 13 c# java string random algorithm

生成给定长度的真正随机字符串是一个相当简单(并且已经很好覆盖)的任务.

然而; 我想生成一个"伪"随机字符串,其附加约束条件是相对容易读取(对于母语英语读者).

我认为另一种说法是说生成的字符串应该由"可识别的音节"组成.例如,"akdjfwv"是一个随机字符串,但它根本无法识别."flamyom"; 然而,非常"可识别"(即使这是无稽之谈.)

显然,人们可以列出一长串"可识别的音节",然后随机选择它们.

但是,有没有更好的方法来做一些像编程生成"可识别的音节"或生成"音节"然后测试它以查看它是否"可识别"?

我可以想到几种方法来实现这个实现,但是如果有人已经实现了它(最好是Java或C#),我宁愿重新使用它们的工作.

有任何想法吗?

Ric*_*ler 17

您可以尝试实施马尔可夫链并为其提供合适的流程.有一个Java实现可能适合您.

这是来自英语的Genesis和西班牙语的Genesis(N = 1)之间插值的样本:

在bersaran thelely和avin inder ththem lovig weay waw thod mofin tht ht fupiteg slsedsed od ma.lllar t land fingujod maid af de wand tetodamoiz fosu Andesp.ersunen thenas lowhejod whipanirede tifinas GofuavithiladgióYDiche fua Dios co l,liens lyYcrerdíquenticuesereregoshielaseagúnduumarbasiarasenslaragúncoruruálaciéluelamagúnerenDiena He.

  • 这将扼杀点数系统的意图 (2认同)

Yis*_*hai 7

我认为这应该做你想要的:

Java密码生成器

它具有源代码和许可许可证,因此您可以根据需要调整源代码.


Ned*_*der 5

你需要生成随机音节.最简单的方法是使用辅音 - 元音或辅音 - 元音 - 辅音的音节.从辅音和元音列表中,随机选择构建音节,然后将音节连接在一起制作一个字符串.

请记住,您的辅音列表不应该是辅音字母,而应该是音素,因此"th","st","sl"等可以是辅音列表中的条目.