Сгенерировать n-значное случайное число

Homesub

Новичок
Сгенерировать n-значное случайное число

Как грамотно сгенерировать слйчайное число с заданным кол-вом знаков?

Например 5-значное.
Нули в начале могут присутствовать...
 

Homesub

Новичок
как вариант, если нет более красивого решения :)

-~{}~ 02.03.06 12:47:

а как грамотно сгенерить одну цифру?
rand не очень случайно получается, а srand умеет одну цифру генерить?
 

Homesub

Новичок
точно, не рассмотрел издалека,
значит srand + rand по одной цифирке?
:)))
 

Alexandre

PHPПенсионер
rand * 100000..0 (всего n нулей) и возми целое.
правда есть некий предел, по этому - если n> 10, то используй это два (три или четыре ) раза
 

Homesub

Новичок
Автор оригинала: Tor
у rand есть аргументы
приложив некоторое кол-во усилий, информацию об этом можно почерпнуть со страницы мануала
Да?! Не знал...
и какие же аргументы надо сказать rand-у чтобы он сгенерил например 10-циферное случайное число с нулями в начале?!
 

Andreika

"PHP for nubies" reader
Homesub
у числа по определению не бывает нулей в начале :)

-~{}~ 02.03.06 20:43:

sprintf("%010d",mt_rand());
 

Homesub

Новичок
Всем спасибо, тему можно закрывать.
Придется в цикле по одной цифре генерить... :)
 

Фанат

oncle terrible
Команда форума
Придется в цикле по одной цифре генерить...
звучит, как "придётся мешки с песком в гору таскать".

я фигею, дорогая редакция.
отсутствие готовой функции дня этих людей - трагедия.
написание сосбтвенной подпрограммки в одну строку - подвиг.
пока на форуме не убедятся (полдня - не меньше! да ещё и уговаривать придётся!) к написанию этого головоломного кода не приступят.
 

Homesub

Новичок
Дело не в головоломности кода а в стремлении найти готовое и(или) красивое решение.

Зачем писать функцию которая например в числе отделяет тысячи разделителем (10000 -> 10.000) когда есть готовая php функция. Только мало кто её знает, вот и извращаются -строки посимвольно разбирают....

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

Я фигею с людей которые начинают критиковать вместо ответа на вопрос или дельного совета. Лишь бы пофлеймить бестолку :)))) НЛ :)
 

Homesub

Новичок
Сорри, не посмотрел на кол-во твоих сообщений.
15151, это примерно по 5000 в год или по 13.6 сообщений в день три года каждый день без праздников и выходных), снимаю шляпу и посыпаю голову пеплом, с таким опытом тягаться не решусь :)))

За сим разрешите откланяться :)
 

Tor

Новичок
10-циферное случайное число с нулями в начале?!
rand * 100000..0 (всего n нулей)
разве этот вариант подходит?

ну ладно, если ты такой беспомощный, то
str_pad(rand(0,9999999999),10,"0",STR_PAD_LEFT);

-~{}~ 02.03.06 13:32:

15151, это примерно по 5000 в год или по 13.6 сообщений в день три года каждый день без праздников и выходных),
вот как раз пример изобретения велосипеда
нет, что бы нажать на "инфо"
 

Homesub

Новичок
если ты такой беспомощный
Да давно уже всё написал, шош вы всех за ламеров то держите тут :)))

PHP:
function genn($n=1) {
	srand(microtime()); 
	for($i=0;$i<$n;$i++) $p.=rand(0,9);
	return $p;
}
вот как раз пример изобретения велосипеда
нет, что бы нажать на "инфо"
ГЫ-ГЫ, РЖУНИМАГУ, и правда :))))
 

SiMM

Новичок
> str_pad(rand(0,9999999999),10,"0",STR_PAD_LEFT);
PHP:
var_dump($val = 9999999999);
var_dump(rand($val,$val));
// float(9999999999) !!!
//   int(1410065407)
 

Solid

Drosera anglica
PHP:
function rnd($n=1) {
	$p = '';
	srand(microtime(true)); //php5
	for($i=0; $i<$n; $i++) {
		$p .= rand(0, 9);
	}
	return $p;
}
для интереса:
PHP:
$gen = rnd(1000000);
print_r(hm($gen));

function hm($gen) {
	$array = array();
		for($j=0, $count=strlen($gen); $j<$count; $j++) {
			if(isset($array[$gen[$j]])) {
				$array[$gen[$j]]++;
			} else {
				$array[$gen[$j]] = 1;
			}
		}
	return $array;
}
 
Сверху