[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: своя функция рандома
nvrskozzy
Дело в том, что нужно перемешать массив из файлов (
scandir("$papka");
)
но так чтобы всегда формировался один и тот же результат..
и ещё нужно создать к каждой ячейке массива с файлами ячейку с рандомным числом от 10 до 20 например, но опять же всегда при исполнении этой функции результат должен быть одинаков - цифры не должны меняться при каждом обращении к странице..

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

но я никак не могу понять как это число загнать в рамки от 10 до 20, тоесть получил я число 276, что потом можно сделать чтобы из таких крупных или мелких чисел получать нужные мне в рамках от 10 до 20..

подскажите :)
да и вообще как лучше сделать такую функцию, сам алгоритм интересен



Спустя 23 минуты, 25 секунд (20.07.2011 - 18:48) kovaldm написал(а):
Так примерно можно.
$num = 276;

while($num < 10 || $num > 20)
{
$num = ($num <= 1)? 2 : $num;

if($num > 20)
$num = round($num / 2);
else
$num = $num * 2;
}

echo $num;

Спустя 6 минут, 13 секунд (20.07.2011 - 18:55) nvrskozzy написал(а):
$num = ($num <= 1)? 2 : $num;

спасибо но эту строчку не пойму)

Спустя 4 минуты, 35 секунд (20.07.2011 - 18:59) kovaldm написал(а):
Если $num будет равно 1, 0, или меньше нуля, то скрипт работать не будет. Лучше будет эту проверку делать перед циклом.

Спустя 5 минут, 5 секунд (20.07.2011 - 19:04) nvrskozzy написал(а):
странная проверка без if без скобок фигурных)
думаю что есть ещё вариант зазать обычный rand(10,20); и создать тхт файл с результатами, а перед этим проверку делать, если файл существует, то rand Не включать, а юзать цифры из файла..

что скажете, отстойная идея?)

как быстрее будет работать страница при обращении к ней, с мутотнёй с файлом или с функцией где возможно сотни вычислений делается с переменной каждой?)

Спустя 9 минут, 40 секунд (20.07.2011 - 19:14) kovaldm написал(а):
Цитата
странная проверка без if без скобок фигурных)

Сокращенная форма if-else, называется - тернарный оператор.
Проверка наличия файла, имхо дольше будет. Хотя брать из файла первые 100 символов, затем кодировать - перекодировать, пожалуй не быстрее получится.

Спустя 13 минут, 5 секунд (20.07.2011 - 19:27) nvrskozzy написал(а):
может есть проще способ и быстрее? чем первые 100 символов?

Спустя 14 минут, 19 секунд (20.07.2011 - 19:41) Joker написал(а):

function my_rand()
{
return mt_rand(0,99999);
}
:D

Спустя 59 секунд (20.07.2011 - 19:42) Winston написал(а):
Так можно еще
function myRand($start = 0, $end = 9999)
{
$array = range($start, $end);
// для специи можно еще
// shuffle($array);

return $array[array_rand($array)];
}

echo myRand(1, 20);

Спустя 11 минут, 43 секунды (20.07.2011 - 19:54) nvrskozzy написал(а):
Цитата (PHPprogrammer @ 20.07.2011 - 16:42)
Так можно еще
function myRand($start = 0, $end = 9999)
{
$array = range($start, $end);
// для специи можно еще
// shuffle($array);

return $array[array_rand($array)];
}

echo myRand(1, 20);

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

Спустя 24 минуты, 56 секунд (20.07.2011 - 20:19) kovaldm написал(а):
Добавляй его постфиксом к имени файла.

Спустя 2 минуты, 8 секунд (20.07.2011 - 20:21) neadekvat написал(а):
Так может, делать все-таки рандомно, а потом сохранять инфу о сортировке, и при следующем запуске выводить список уже из сохраненной инфы.

Спустя 17 минут, 19 секунд (20.07.2011 - 20:38) kovaldm написал(а):
Или храни свои "рандомные" числа в БД.

Спустя 23 часа, 3 минуты, 27 секунд (21.07.2011 - 19:42) nvrskozzy написал(а):
ну я так и написал про запись в тхт файл, бд нету на сайте и не будет, кроме как в тхт записать вроде как некуда..


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.