WBS
Новичок
Неправильная работа функции array_rand
Создаем массив из $i_max элементов. Делаем 10 случайных выборок по 20 элементов в каждой.
Код:
Получаем:
Выборки 1 и 9, а также 2 и 10 получились одинаковыми. Почему?
При увеличении $i_max (размера массива) последовательности начинают повторяться чаще. Т.е. из массива начинают извлекаться не случайные элементы, а одни и те же.
Тесты проводились на ОС Windows Vista SP2, PHP 5.3.0.
Создаем массив из $i_max элементов. Делаем 10 случайных выборок по 20 элементов в каждой.
Код:
PHP:
<?
$i_max = 30000;
for($i=0; $i<$i_max; $i++)
$arr[] = $i;
for ($i=0; $i<10; $i++) {
$rand_ids = array_rand($arr, 20);
for ($i2=0; $i2<20; $i2++)
print($rand_ids[$i2]."<br>");
print("<p>");
}
?>
PHP:
.
869 1974 1673 583 524 1591 237 5118 869 1974
2078 2886 2049 875 5299 3832 1155 5709 2078 2886
2432 4044 2149 5094 5591 5166 2393 6627 2432 4044
3404 4914 3140 5470 9810 5691 2990 7865 3404 4914
8523 6123 5115 5570 10186 10466 3400 8462 8523 6123
9114 6477 6027 6561 10286 10758 4992 8872 9114 6477
10032 7449 7185 8536 11277 14977 7233 10464 10032 7449
11270 12568 9264 9448 13252 15353 8567 12705 11270 12568
11867 13159 9618 10606 14164 15453 9092 14039 11867 13159
12277 14077 10590 12685 15322 16444 13867 14564 12277 14077
13869 15315 16300 13039 16192 18419 14159 17236 13869 15315
16110 15912 17218 14011 17401 19331 18378 19339 16110 15912
17444 16322 18456 19130 17755 20489 18754 19631 17444 16322
17969 17914 19053 19721 18727 21359 18854 23850 17969 17914
22744 20155 19463 20639 23846 22568 19845 24226 22744 20155
23036 21489 21055 21877 24437 22922 21820 24326 23036 21489
27255 22014 23296 22474 25355 23894 22732 25317 27255 22014
27631 26789 24630 22884 26593 29013 23890 27292 27631 26789
27731 27081 25155 26717 27190 29221 26323 28204 27731 27081
28722 29626 29346 28051 27600 29366 27295 29362 28722 29626
При увеличении $i_max (размера массива) последовательности начинают повторяться чаще. Т.е. из массива начинают извлекаться не случайные элементы, а одни и те же.
Тесты проводились на ОС Windows Vista SP2, PHP 5.3.0.