Генератор случайных чисел - это просто

Апрель 02, 2007

Только что рассуждая о судьбах мира меня посетила простая идея, как можно создать генератор случайных чисел. Сразу оговорюсь, что алгоритм генератора случайных чисел абстрактный, а реализация приведена для языка web-программирования PHP. Кому надо, сможет повторить все на любом другом языке.

Конечно, можно воспользоваться стандартной функцией rand. Но мне было интересно создать генератор чисел самому. Основное условие - это генерация при каждом запуске программы именно уникального числа, без так называемой псевдослучайной последовательности. Я считаю, что избавиться от псевдослучайных чисел можно используя в качестве основы для генерации числового ряда время в микросекундах.

Выдавать на выходе генератор должен число в формате 0.xxx

Для генерации случайных счисел я воспользоватлся следующим алгоритмом:

function random()
	{
	return ((int)substr(eregi_replace("[^0-9] ","",md5(getmicrotime().time())),0,3))/1000;
	}
function getmicrotime() 
	{
	list($usec, $sec) = explode(" ", microtime()); 
	return ((float)$usec   (float)$sec); 
	}

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

Как видно, я использовал расчет md5 от полученого уникального числа микросекунд и времени в секундах с последующим выделением первой тройки цифр и составления из них случайного числа с точностью до тысячных.

Функцию random еще можно доработать, что бы она выдавала числа заданной точности после запятой и не выдавала одинаковых результатов при запусе в одну и ту же микросекунду. Но для бытовых нужд такой генератор случайных чисел более чем достаточен.


Автор:



Комментариев: 2 » | Просмотров: 10447 | Рекомендаций у статьи 8. рекомендовать

Постоянная ссылка на статью: http://alexusblog.com/post/the-random-number-generator-is-simply.html


Следующая статья: Новая рубрика, посвященная AdSense
Предыдущая статья: Google Picasa - программа для организации фотографий
Все статьи в разделе оглавление

AlexusBlog.com

Поиск по сайту:
 
  регистрация : о блоге : на главную