Эта тема на forum.dklab.ru


Remy: Random
Подскажите как использовать ф РНР функцию, аналогичную randmize (random) в других языках программирования???
Например, что бы она (программа) выбирала случайное значение из имеющегося массива.
bæv:
Это не подойдёт?

rand
Dmitri R. S.:
Или так:
<?
function get_random_element($array){
mt_srand(time() + (double) microtime() * 1000000); //Чтобы число было по-настоящему случайным и не повторялось при обновлении
$random_number = (int) mt_rand(0, count($array)); //Вот и случайный элемент массива (вернее, его номер)
return $array[$random_number]; //возвращаем элемент массива
}
?>
Ant:
Или взять и почитать мануал.
Neo:
<?php
define('_SYLLABELS', "*abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789");
define('_MAKEPASS_LEN', 8);
define('_MAKEPASS_BOX', 5000);
// взято с php.net

function _make_seed()
{
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}

function makePass()
{
// init some
$result = '';
mt_srand(_make_seed());
$syllabels = _SYLLABELS;
$len = strlen($syllabels) - 1;
$box = "";
// create box
for($i = 0; $i < _MAKEPASS_BOX; $i++) {
$ch = $syllabels[mt_rand(0, $len)];
// about 20% upper case letters
if (mt_rand(0, $len) % 5 == 1) {
$ch = strtoupper($ch);
}
// filling up the box with random chars
$box .= $ch;
}
// now collect password from box
for($i = 0; $i < _MAKEPASS_LEN; $i++) {
$result .= $box[mt_rand(0, (_MAKEPASS_BOX - 1))];
}

return $result;
}
echo (makePass());
?>
А так можно самому выбрать элементы из которых генерить что-нить
Юрий Насретдинов:
Замечание: Начиная с PHP 4.2.0, больше нет необходимости инициализировать генератор случайных чисел функциями srand() или mt_srand(), поскольку теперь это происходит автоматически.
Neo:
В следующий раз учту.
Дмитрий Котеров:
function get_random_element($array){
mt_srand
Так вообще нельзя делать. Вызовите функцию 2 раза подряд — она одно и то же вернет.
after: Re: Random
что бы она (программа) выбирала случайное значение из имеющегося массива.

Посмотрите http://ru3.php.net/manual/en/function.array-rand.php
Dmitri R. S.:
Дмитрий Котеров:
А mt_srand не для того, чтобы "случайности" были случайными при повторном запуске? Или я чего-то напутал?
Хотя в любом случае стоит вызывать mt_srand один раз в начале скрипта, а не так, как я это сделал.
Remy:
Спасибо всем!!!
Зацените :) :
скрипт сканирует указанную директорию и если там оказываются файлы с расширениями mid ou midi, то выводит соответствующий random-код
$counter="0";
$randarray=array();
$dir=opendir("musiques");
while($var=readdir($dir))
{
if(ereg(".mid", $var) || ereg(".midi", $var)):
$randarray[]=$var;;endif;
}
srand((double)microtime()*1000000);
$randomv=rand("0", sizeof($randarray));
print "<bgsound src='./musiques/$randarray[$randomv]' loop='1'/>";

Сразу извиняюсь за такой простенький (и может быть кому-то покажется нелепый) код, но я еще почти полный профан в РНР! :-)
Евгений Галашин:
1. зачем устаревшицй синтаксис if?
2. Зачем сначала считывать весь списов файлов?
3. а если будет файл .midirc или rfnfkju my.midi?
Remy:
1 - просто нравится...
2 - а как надо?
3 - в директории файлы специально для этой цели.
Анжелика Моисеенкова:
srand
Евгений Галашин:
srand
Вы про что?
1 - просто нравится...
А про coding standards слышали?...
2 - а как надо?
Не знаю. но как-нибудь поизящнее наверняка можно.
3 - в директории файлы специально для этой цели.
Ну-ну...
Remy:
Не знаю. но как-нибудь поизящнее наверняка можно
Может быть, только я тоже не знаю как! :-)

А про coding standards слышали?...
Нет, к сожалению, не слышал! :-(
Дмитрий Эсс:
Нет, к сожалению, не слышал!
http://pear.php.net/manual/ru/standards.php
Дмитрий Котеров:
ereg(".mid", $var) || ereg(".midi", $var)
Евгений говорит, что надо ereg('\.midi?$', $var) вместо этих двух вызовов.
Remy:
Понял, спасибо!!!
Анжелика Моисеенкова:
Евгений Галашин:
Вы про что?
Был вопрос:
"...аналогичную randmize (random) в других языках программирования..."
Насколько я понял, речь про Паскаль. Инициализатор случайных чисел там называется randomize. В PHP же инициализатор называется srand(), но в последних версиях можно обойтись и без него.
Remy:
Вам всё, что надо написал Dmitri R. S.. Только вместо mt_srand можно использовать просто srand, а вместо mt_rand просто rand.
Юрий Насретдинов:
Remy:
$randomv=rand("0", sizeof($randarray));
А что будет, если это будет последний элемент ? надо sizeof()-1 .

P.S. mt_srand() самая надежная функция в данном случае.
Remy:
Спасибо, учту!
Можете посмотреть результаты на http://remy-oliver-blade.com, а именно на http://remy-oliver-blade.com/russe/
Не забудьте про гостевую!
Анжелика Моисеенкова:

Спасибо, учту!
Можете посмотреть результаты на http://remy-oliver-blade.com, а именно на http://remy-oliver-blade.com/russe/
Не забудьте про гостевую!


Модераторы, это же реклама!

Тему можно закрыть (:).
Ant:
это же реклама!
Вряд ли это похоже на рекламу. Кто туда пойдёт?
Remy:
Модераторы, это же реклама!
Это не реклама. Собственно этот топик я открыл ради www.Remy-Oliver-Blade.com, и вполне разумно показать результаты!
А насчет рекламы... Сам ее не люблю! :)
Дмитрий Эсс:
Profile!:
Естественно это реклама, но не злостная и не наглая. Предоставьте нам право выбирать, какую рекламу резать.
Всё в этой жизни реклама. Каждый, например, участвуя в обсуждении на форумах рекламирует себя, повышает свой авторитет.
Remy:
Всё в этой жизни реклама. - круто! :)
Анжелика Моисеенкова:
Ant:
А Вы как будто бы и не знали про такой способ грязной раскрутки сайта!?
Дмитрий Эсс:
Profile!:
Завязываем с оффтопом! Я уже сказал наше мнение по поводу этой ссылки.
Remy:
Хе... Может быть и не знал! :)
Ant:
Дмитрий Эсс:
Тему пора закрыть.

Эта тема на forum.dklab.ru