Реклама на сайте Advertise with us

Рандомная выдача.

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

Люблю то, что делаю!

С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418


Передовик Master-X (16.12.2014) Передовик Master-X (16.02.2017) Передовик Master-X (01.03.2017) Передовик Master-X (16.03.2017) Передовик Master-X (01.09.2017) Ветеран трепа Master-X (16.09.2017)
Ссылка на сообщениеДобавлено: 30/07/12 в 09:44       Ответить с цитатойцитата 

есть функция:
Код: [развернуть]


у меня есть несколько файлов откуда эта функция в процессе работы цикла должна рандомно тянуть строки.
Но вот проблема, она тянет всегда одно и тоже, т.е. если в файле будет сотни строк
она будет тянуть только порядка 10 одних и тех-же.
Х.з как это обойти и почему это проискодит.
Если эту функцию запускать отдельно от всего то она работает нормально
а вот в общем скрипте не хочет так.
Файл из 74 строк, в скрипте рандом выдается так
57
31
25
5
22
26
20
и сново
57
31
25
и т.д.
тут цикличность через 7 в другом файле эта цикличность через 3, но там и строк больше. Короче незнаю даже куда рыть.
Работает срипт локально у себя на компе, под виндой.
даже если перезапустить апач, выключить комп, похер. Рандом с этого фала будет постоянно таким.

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 30/07/12 в 10:02       Ответить с цитатойцитата 

попробуй через shuffle перемешать массив trollface.png

8
 

tuberotator.com

С нами с 12.09.06
Сообщения: 804
Рейтинг: 1478


Передовик Master-X (01.01.2015) Передовик Master-X (16.01.2015)
Ссылка на сообщениеДобавлено: 30/07/12 в 11:36       Ответить с цитатойцитата 

ibiz: +1

например так:
Код: [развернуть]


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

TUBE Rotator - Самый удобный, быстрый и главное любимый поисковиками!
Создай ТУБ за пять минут

8
 



С нами с 28.02.12
Сообщения: 1494
Рейтинг: 234

Ссылка на сообщениеДобавлено: 30/07/12 в 14:56       Ответить с цитатойцитата 

php может древнее 4.2.0 стоит?

попробуй генератор случайных чисел запустить вначале

Цитата:
srand((float) microtime() * 10000000);


http://php.su/functions/?array-rand

Каталог партнерок с инвайтами

8
 

Люблю то, что делаю!

С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418


Передовик Master-X (16.12.2014) Передовик Master-X (16.02.2017) Передовик Master-X (01.03.2017) Передовик Master-X (16.03.2017) Передовик Master-X (01.09.2017) Ветеран трепа Master-X (16.09.2017)
Ссылка на сообщениеДобавлено: 30/07/12 в 17:21       Ответить с цитатойцитата 

pipez писал:
php может древнее 4.2.0 стоит?

попробуй генератор случайных чисел запустить вначале



http://php.su/functions/?array-rand


генерит тоже с определенным периодом, т.е. так же повторы идут циклично.

то что предложили выше должно пойти, как освобожусь проверю icon_biggrin.gif

0
 

Люблю то, что делаю!

С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418


Передовик Master-X (16.12.2014) Передовик Master-X (16.02.2017) Передовик Master-X (01.03.2017) Передовик Master-X (16.03.2017) Передовик Master-X (01.09.2017) Ветеран трепа Master-X (16.09.2017)
Ссылка на сообщениеДобавлено: 31/07/12 в 11:29       Ответить с цитатойцитата 

Nux писал:
ibiz: +1

например так:
Код: [развернуть]


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


тоже самое только теперь цикл повторов длинее стал
если был 8-10 то теперь 69-78
может как то сам код неправильно выстроен icon_sad.gif

вот сам код:

Код: [развернуть]


ПХП установлен версии 5.0.4

0
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 31/07/12 в 16:55       Ответить с цитатойцитата 

Тест для иллюстрации проблемы и её решение.



Код:
function array_random_from_file( $file, $count ) {
    $random = false;
    if( $array = file( $file ) and $count > 0 and $count <= count( $array ) ) {
        $random_indexes = array_rand( $array, $count );
        if( $count == 1)
            $random_indexes = array( $random_indexes );
        $random = array();
        foreach( $random_indexes as $i )
            $random[] = $array[ $i ];
    }
    return $random;
}

function array_random_from_file_2( $file, $count ) {
    if( $random = array_random_from_file( $file, $count ) )
        shuffle( $random );
    return $random;
}

function test( $file, $width, $height, $method ) {
    for( $n = 3; $n <= $width; $n *= 10 ) {
        $random = array();
        for( $i = 0; $i < $width / $n; $i += 1 )
            foreach( $method( $file, $n ) as $r )
                $random[] = $r;
        $img = imagecreatetruecolor( $width, $height );
        $color = imagecolorallocate( $img, 255, 255, 255 );
        for( $x = 0; $x < $width; $x += 1 )
            imagesetpixel( $img, $x, $height - $random[ $x ], $color );
        imagestring( $img, 5, 20, 20, $method, $color );
        imagestring( $img, 4, 20, 40, $n.' from '.$width, $color );
        $id = uniqid();
        imagejpeg( $img, "test/$id.jpg" );
        imagedestroy( $img );
        echo '<img src="'."test/$id.jpg".'" />&nbsp;';
    }
}

$file = realpath( dirname( __FILE__ ) ).DIRECTORY_SEPARATOR.'data.txt';
$height = 300;
$width = $height;
$array = array();
for( $i = 0; $i < $height; $i += 1 )
    $array[] = $i;
file_put_contents( $file, implode( "\n", $array ) );

test( $file, $width, $height, 'array_random_from_file' );
echo '<hr/>';
test( $file, $width, $height, 'array_random_from_file_2' );

8
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »