我想生成一个带有意义的单词
的随机字符串function randString($length, $charset='abcdefghijklmnopqrstuvwxyz'){
$str = '';
$count = strlen($charset);
while ($length--) {
$str .= $charset[mt_rand(0, $count-1)];
}
return $str;
}
我已经使用过这个函数,但是它生成了random,这在字典中没有任何意义。 你有什么想法或不可能。 如果您有任何想法或有更好的解决方案,请告诉我。
提前致谢。
答案 0 :(得分:1)
尝试使用随机字母数字字符串
function get_random_string($valid_chars, $length) {
$random_string = '';
//Count the number of chars in the valid chars string so we know how many choices we have
$num_valid_chars = strlen($valid_chars);
//Repeat the steps until we've created a string of the right length
for($i=0;$i<$length;$i++) {
//Pick a random number from 1 up to the number of valid chars
$random_pick = mt_rand(1, $num_valid_chars);
//Take the random character out of the string of valid chars
//Subtract 1 from $random_pick because strings are indexed starting at 0, and we started picking at 1
$random_char = $valid_chars[$random_pick-1];
$random_string .= $random_char;
}
return $random_string;
}
答案 1 :(得分:0)
正如马克贝克在评论中写道,“有意义”和“随机”很难汇集在一起。
但是,如果你想从给定的语言中显示一个真实的单词,而没有人能够提前猜出那个单词是什么,你可以按照以下方式进行(在伪代码中,没有时间写它以PHP):
read list of unique words in language into wordList
generate random integer i, <= length of wordList
return word at position i in wordList
考虑使用password dictionary作为词汇表的来源。
答案 2 :(得分:0)
从ASPELL或http://sourceforge.net/projects/wordlist/获取单词列表,将它们导入db表并通过php随机选择一个:)
示例查询:
SELECT word FROM dictionary order by RAND() LIMIT 1