Неправильная работа функции array_rand

  • Автор темы Автор темы WBS
  • Дата начала Дата начала
tf, с чего ты взял, что crc32 от подстроки md5 чего-то там будет давать равномерное распределение? И зачем надо брать подстроку из середины шестнадцатеричного представления md5, а не от всего этого представления или скажем не часть (32 или 64 бита в зависимости от платформы) из 128 бит md5?
 
там ничего не написано про равномерное распределение, это из другой темы
 
можно сделать демона, который будет генерить случайные числа для *srand()* в пхп

используем другой язык, например TCL, чтобы никто не догадался о генератора случайных чисел

демон (пара строк кода - цикл с записью очередного rand и sleep) каждые несколько секунд пишет в файл или мемкеш очередное случайное число, пхп хавает, юзает srand
 
ну зачем?
пускай едет на unix если у него критичность рандомный данных
 
что зачем? Это написать быстрее, чем здесь туфту строчить.
 
В 2007 году еще заметил баг функции array_rand(). Написал аналог, - может кому пригодится.

PHP:
    function array_rand_analog($input, $num_req=1)
    {
        $num_req=(int) $num_req;
        if(!$num_req) return array();

        $count=count($input);
        unset($input);

        if(!$count) return array();
        if($num_req>$count) $num_req=$count;

        $array=array();
        while($num_req--)
        {
            do
            {
                $j=mt_rand(0, $count-1);
            }while(isset($array[$j]));

            $array[$j]=$j;
        }

        return array_values($array);
    }
 
Последнее редактирование:
fylj81.jpg
 
мне кажется og в названии функции лишнее лучше no
 
мне кажется og в названии функции лишнее лучше no
Не важно как я ее тут назвал, - это не принципиально. 2016 год, - проблема функции осталась.
Не везде array_rand работает стабильно.
Софт с использованием встроенной функцией глючит в неподходящие моменты.
Костыль работает быстро, надежно, - потери в производительности незначительные.
Не нравится приставка в названии, пусть будет так:
PHP:
    /**
     * @param $input
     * @param int $num_req
     * @return array
     */
    public static
    function array_rand($input, $num_req=1)
    {

        $num_req=(int) $num_req;
        if(!$num_req) return array();

        $count=count($input);
        unset($input);

        if(!$count) return array();
        if($num_req>$count) $num_req=$count;

        $array=array();
        while($num_req--)
        {
            do
            {
                $j=mt_rand(0, $count-1);
            }while(isset($array[$j]));
            $array[$j]=$j;
        }

        return array_values($array);
    }
 
Я товарища Web-6 забанил. за мат и....если честно за бесполезность его присутствия здесь. сообщение с матом удалил. Если кто против - высказывайтесь.
 
блин, хотел узнать как класс называется
 
Сверху