Генерация случайных символов

monk

Новичок
Генерация случайных символов

$array = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z","1","2","3","4","5","6","7","8","9","0");
for ($i=0; $i<10; $i++) {
$r = rand(0,60);
$n[$i]= $array["$r"];
}
$key = $n[0].$n[1].$n[2].$n[3].$n[4].$n[5].$n[6].$n[7].$n[8].$n[9];

Т.о. генерирую строку из 10 случайных символов. А есть ли функция для этого?
 

white phoenix

Новичок
PHP:
$key = '';
$array = array_merge(range('A','Z'),range('a','z'),range('0','9'));
$c = count($array);
for($i=0;$i<10;$i++) {$key .= $array[rand(0,$c)];}
 

Solid

Drosera anglica
PHP:
function random_text($count, $min, $max) {
	$return = '';
	for($i=0, $j=0; $i<$count; $i++, $j++) {
		$now = rand(97, 122);
		$return .= chr($now);
		if($j>=$min) {
			if(rand(0,5)==0) {
				$return .= ' ';
				$j = 0;
				$i++;
			}
		}
		if($j==$max) {
			$return .= ' ';
			$j = 0;
			$i++;
		}
	}
	return $return;
}
генерация слов.
 

SelenIT

IT-лунатик :)
К варианту white phoenixа явно напрашивается [m]array_rand[/m]. А вообще есть [m]str_shuffle[/m].
 

white phoenix

Новичок
Solid
Бедный йорик...
SelenIT
> явно напрашивается array_rand.
Почему?
> А вообще есть str_shuffle.
Можно конечно заполнить строку символами из массива, а потом перемешать... тоже вариант.

Но мой вариант полюбому самый быстрый :)
 

SelenIT

IT-лунатик :)
На мой взгляд, более стильно выйдет - решение в одну строчку на array_* - функциях. :)
А по скорости надо тестить, но подозреваю, что 10 случайных элементов быстрее выберет встроенная ф-ция, чем цикл. Хотя при 10 элементах разница во времени по-любому не скажется :)
 

alexwans

Новичок
Короче, но без заглавных букв (думаю это не очень обязательно?)

PHP:
substr(md5(rand(0,mt_getrandmax())),0,10);
 

SiMM

Новичок
> но без заглавных букв
Да там не то, что заглавных - там большей половины алфавита нет. Надо ж хоть какое-то представление об используемых функциях иметь, а не тупо копировать где-то увиденное.
 

Solid

Drosera anglica
Автор оригинала: white phoenix
Solid
Бедный йорик...
SelenIT
> явно напрашивается array_rand.
Почему?
> А вообще есть str_shuffle.
Можно конечно заполнить строку символами из массива, а потом перемешать... тоже вариант.

Но мой вариант полюбому самый быстрый :)
Могу лишь позавидовать твоей самоуверенности.
У тебя там ошибка ;).
 

monk

Новичок
Интересно, какой вариант выполнится быстрее. Мой или
white phoenix? Ведь они одинаковые, за исключением подсчета элементов массива.
 
Сверху