2

我想用有意义的词生成一个随机字符串

function randString($length, $charset='abcdefghijklmnopqrstuvwxyz'){
    $str = '';
    $count = strlen($charset);
    while ($length--) {
        $str .= $charset[mt_rand(0, $count-1)];
    }
    return $str;
}

我已经使用了这个函数,但它会生成随机的,在字典中没有任何意义。你有什么想法还是不可能。如果您有任何想法或有更好的解决方案,请告诉我。

提前致谢。

4

3 回答 3

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;
}  
于 2013-09-30T10:09:59.923 回答
0

从ASPELLhttp://sourceforge.net/projects/wordlist/获取单词列表,将它们导入 db 表并通过 php 随机选择一个 :)

示例查询:

SELECT word FROM dictionary order by RAND() LIMIT 1
于 2013-09-30T10:19:00.740 回答
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

考虑使用密码字典作为词表的来源。

于 2013-09-30T10:16:44.297 回答