我需要找出一个算法,或者更好的是,如果在php / java中有一个实现来生成单词,建议用户选择像某些标识符,但我希望它们有点容易记住,例如'wonifuxa','thonqi','oqriman'等等,但不是'nxdFgtqI'
答案 0 :(得分:7)
这是一个生成你正在描述的随机单词的函数。它没有使用字母“Q”,因为那个字母不断发出不可发音的字样。
<?php
//generate random consonants separated by vowels
function generate_faux_word($letters = 5){
//define arrays of consonants and vowels
//no q, it's tough to remember
$consonants = array('b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z');
$vowels = array('a', 'e', 'i', 'o', 'u');
$ret_word = "";
$consonant_toggle = true;
//randomly choose a consonant then a vowel until the word is as long as the parameter
while(strlen($ret_word) < $letters){
if ($consonant_toggle){
$ret_word .= $consonants[array_rand($consonants)];
$consonant_toggle = false;
}else{
$ret_word .= $vowels[array_rand($vowels)];
$consonant_toggle = true;
}
}
return $ret_word;
}
echo generate_faux_word();
echo "<br />";
echo generate_faux_word();
echo "<br />";
echo generate_faux_word(6);
echo "<br />";
echo generate_faux_word(4);
?>
示例输出是: muher sucok kozive xaso
答案 1 :(得分:5)
有一个用于生成可发音词的库。以下是图书馆的链接:http://www.multicians.org/thvv/gpw.html。该页面上有一个指向Java源文件的链接。我首先找到了python库:http://www.preetk.com/node/pygpw-generate-pronouncable-words/
答案 2 :(得分:4)
回到电报的时代,当每封信收费时,很多公司设计了代码,用尽可能少的字母对整个句子进行编码。他们中的大多数都有相同的基本要求:一组相当容易记住的字母。通常的规则是像元音组和最多两个辅音之间的交替。这将允许(例如)“labdon”,但不允许“aobldn”(相同的字母,不同的顺序)。几乎你按照这样的规则生成的任何序列都很容易发音,所以有人可以记住它本质上是一个单词,而不是必须记住所有单个字母。
答案 3 :(得分:1)
使用字典并选择两个单词。将它们拆分为随机点并加入它们。
示例:
IDEA -> IDE
WITHOUT -> THOUT
-----------
IDETHOUT
为了获得更好的结果,控制分裂点(例如,第一个单词:在元音处分开,第二个单词:在辅音之前分开,以及产生音节= 3的方式)。
答案 4 :(得分:1)
private static string RandomWord(int length)
{
var consonants = new[] { "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "r", "s", "t", "v", "w", "x", "y", "z" };
var vowels = new[] { "a", "e", "i", "o", "u" };
var word = "";
var b = true;
for (var i = 0; i < length; i++)
{
word += b ? consonants[Rng.Next(consonants.Length)] : vowels[Rng.Next(vowels.Length)];
b = !b;
}
return word;
}
答案 5 :(得分:0)
您是否可以一次创建一个字符串,并使每个字符的值在97-122(含)之间。这些是字母a-z(非上限)的ascii十进制值。然后当然将它们转换为字符串。
虽然这是否有效取决于您对“易记”的定义。他们都很难记住我。
答案 6 :(得分:0)
废话词生成器。这是使用几个与@Jerry Coffin所说的相似的不同结构构建的。有趣,但不一定有用! http://www.mygengen.com/gengens/view/nonsense-words