2013-09-30 3 views
2

Я хотел бы, чтобы сгенерировать случайную строку со значимым словомгенерировать значимую случайную строку с помощью PHP

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

я использовал эту функцию, но она генерирует случайной, не имеет никакого значения в словаре. У вас есть идея или это невозможно. Пожалуйста, дайте мне знать, если у вас есть какие-либо идеи или у вас есть лучшее решение.

Заранее спасибо.

+6

'' meaningful' и random' не очень хорошо сочетаются: если вам нужно иметь смысл, то как насчет случайного выбора из словаря? –

+0

это невозможно? –

+0

http://eksith.wordpress.com/2012/04/27/pseudo-language-generator/ –

ответ

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; 
} 
+0

yeh @rid вы правы –

+0

вид африка-мороза – Lance

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 в качестве источника вашего словника.

0

Получить список слов из ASPELL или http://sourceforge.net/projects/wordlist/, импортировать их в таблицу БД и случайным образом выбрать один на PHP :)

Пример запроса:

SELECT word FROM dictionary order by RAND() LIMIT 1 
+0

Спасибо! Давайте попробуем –

+0

Удачи! У меня есть пример кода где-то, как я сделал то же самое два года назад .. Будет выглядеть :) –

+0

где пример кода? –

Смежные вопросы