@polyvoidex

Как убрать артефакты в генераторе случайных чисел (функция rand)?

Создаю пакет текстур высокого разрешения 512x для Майнкрафта. Изображения должно состоять из случайно расположенных пикселей двух цветов. Для этого использую браузер, в котором создаю картинку из однопиксельных div`ов, сгруппированных через float:left.

<?php

echo '<style>
#q{background:#FFF}
#w{background:#000}
#q,#w{float:left;width:1px;height:1px}
</style>';

echo '<div style="width:128px;height:128px">';

for($i=0;$i<(128*128);$i++){
	if(0==rand(0,1)){
		echo '<div id="q"></div>';
	}else{
		echo '<div id="w"></div>';
	}
}

echo '</div>';

?>

На выходе я хочу получить песочный узор, но возникают последовательности полос одинаковых точек:

5ad3c1e150123550491283.gif5ad3c1e9401e6641302537.gif5ad3c1f255e05772858444.gif

Что происходит?
  • Мой браузер (Opera 52 64-bit) не правильно рендерит разметку?
  • При каких-то условиях у функции rand (PHP 5.2.9) происходит отклонение возможной генерации числа в одну или другую сторону?
  • Моё железо (AMD FX-4300) неправильно работает?
  • Всё правильно. Так должно быть при случайной генерации.

Математики, просветите!
  • Вопрос задан
  • 79 просмотров
Решения вопроса 2
@polyvoidex Автор вопроса
Я понял почему у меня возникли проблемы. Мне нужно было использовать псевдослучайную генерацию чисел, типа вихря Мерсенна (функция mt_rand).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы