Pull to refresh
2770.7
RUVDS.com
VDS/VPS-хостинг. Скидка 15% по коду HABR15

Random.org — история длиной в 20 лет

Reading time8 min
Views21K
Уже совсем скоро в рамках проекта «Сервер в облаках» у нас полетит воздушный шар, чьи координаты места приземления — настоящий генератор истинно случайных чисел, у которого источником энтропии является движение воздушных масс. На момент написания этого поста более 100 хабражителей принимают участие в этой интеллектуальной гонке – угадать/рассчитать место приземления сервера и выиграть сертификат на участие в регате. Присоединяйся!



А пока идет гонка и подготовка к полету, мы вспомнили, что у Random.org, одного из самых популярных онлайн-генераторов, предоставляющего истинно случайные числа, источником энтропии тоже является атмосфера, точнее, атмосферные шумы. К тому же сайт скоро будет справлять 20-летие. И история развития Random.org оказалась настолько феерична, и в духе нашего проекта, что в честь «энтропийного совпадения» и скорого юбилея мы решили перевести её для вас.

Сайт Random.org был запущен в октябре 1998 Мадсом Хааром (Mads Haahr), профессором информатики в ирландском Тринити Колледже, а в октябре 2010 из частного проекта превратился в закрытое акционерное общество.


Задача Random.org — генерировать и предоставлять всем желающим истинно случайные числа на основе атмосферных шумов, то есть шумов в радиоэфире, возникающих из-за естественных атмосферных процессов. На главной странице можно сгенерировать случайное число в диапазоне от 1 до 1 000 000 000.

Для чего только не используют сегодня Random.org: для ставок в тотализаторах, для онлайн-игр, для научных исследований, для создания изображений, музыки и множества других задач. На сегодняшний день Random.org сгенерировал более 1,6 триллиона случайных битов.

История Random.org


▍Глава 0: Как это всё началось… (1997)


История Random.org началась летом 1997-го, когда я работал на стартап, разрабатывавший движок для азартных онлайн-игр. Это был маленький проект: четыре человека делали прототип в надежде поднять денег для продолжения разработки. Движок имел базовую функциональность и мог дополняться модулями различных игр. Мы реализовали прототип самого движка и нескольких игровых модулей, которые позволяли в браузере играть в лотерею, блэкджек и игровые автоматы.

Мы быстро поняли, что серьёзному движку нужен генератор истинно случайных чисел, который поддерживал бы игры, в которых участвуют настоящие деньги (если хотите знать, что может произойти, если не использовать в игровой системе генератор истинно случайных чисел, почитайте статью о ТВ-шоу 1980-х «Press Your Luck»). Почитав о теории случайности, мы решили, что радио, которое фиксирует атмосферные шумы, будет дешёвым и элегантным способом получения энтропии для генерирования случайных чисел. К тому же генератор будет стоять в нашем офисе, то есть у радио есть преимущество перед системами на основе счётчика Гейгера (которые тоже довольно популярны), поскольку радио не нуждается в источнике радиации.

Первую версию нашего генератора мы собрали на основе ресивера за $10 из магазина Radio Shack. Его покупка сама по себе была забавной историей. Мы знали, что многие радиоприёмники, даже дешёвые, содержат фильтры помех и играют только в том случае, если вы точно настроились на передачу какой-либо радиостанции. Поэтому придя в магазин мы объяснили продавцу, что нам нужно самое дешёвое радио, потому что нашему компьютеру нужно слышать статические шумы. Мужик явно не был уверен в здравости нашего рассудка. Мы также настояли, чтобы продавец позволил нам протестировать радио в магазине, чтобы мы убедились в качестве шумов и отсутствии фильтра помех. Удивительно, но он позволил нам это сделать (уважуха Radio Shack, ведь это была распродажа за $10), и когда мы (кажется, нас было трое) услышали шумы, то радостно вскочили и быстро расплатились. Думаю, выглядели мы весьма безумно.

За несколько дней мы написали первую версию генератора. Он был написан на С/С++, крутился под Windows NT и использовал стандартную звуковую карту, уже не вспомню производителя. Хотя генератор был полностью функциональным, но получился несколько корявым в том смысле, что генерировал просто случайные биты, а не красивые настраиваемые интервалы, которые вы сегодня видите на Random.org. Однако этого было достаточно для перемешивания карточных колод для блэкджека, выбора лотерейных номеров и вращения колёс в игровых автоматах.

А что случилось с нашим движком? Прототип и архитектура были действительно хороши, но в конце концов компания решила прекратить разработку азартных игр, так что мы успели сделать не слишком много. Думаю, мы несколько опередили время. На дворе был 1997-й, и мы считали, что через год-два рынок азартных онлайн-игр взлетит. Но в реальности это заняло гораздо больше времени. Random.org — единственная сохранившаяся часть того проекта. Мои друзья отказались от азартных игр и основали две успешные компании: Pentia и Sitecore.

▍Глава 1: Дни Sun (1998-2001)


В сентябре 1998-го я занялся кандидатской диссертацией по информатике в Тринити Колледже в Дублине. Тема диссертации относилась к мобильным вычислениям и очень мало имела общего со случайными числами. Но поскольку в прошлом году я сделал большую часть работы по созданию генератора и мне действительно нравилась идея использования атмосферных шумов для генерирования случайных чисел, я решил не забрасывать проект. Рассказал о нём Винни Кахилу (Vinny Cahill), руководителю моей исследовательской группы (Distributed Systems Group), и предложил разместить систему в одном из помещений. Винни с энтузиазмом поддержал предложение, и в течение пары месяцев я приспособил старую Sun SPARCstation, стоявшую в лаборатории, переписал генератор под ОС Solaris и сделал первую версию сайта Random.org. Он начал работать в октябре 1998-го.

В то время ещё не было общедоступных сервисов генерирования случайных чисел на основе атмосферных шумов, но уже существовали HotBits и Lavarand (оригинальная версия Silicon Graphics). Зачем нужен был ещё один генератор? Главная причина — мне было интересно его создавать. Вторая причина — имевшиеся сервисы служили, в основном, для обучения и развлечения. Я хотел, чтобы Random.org тоже использовали для обучения и развлечения, но в то же время хотел превратить его в сервис, полезный для решения определённых (не критических) задач, для которых требуются случайные числа. С тех пор люди использовали Random.org для целей, о которых я и помыслить не мог, и сервис много раз обновлялся, чтобы его можно было применять для куда более серьёзных задач, чем я предполагал.


Random.org v1 (с бутылками виски)

На этой фотографии изображена первая версия оборудования Random.org, так всё выглядело с 1998-го по 2001-й (правда, снято это в 2005-м). Радио — транзисторный приёмник Hitachi, который достался мне бесплатно, потому что встроенный кассетник был сломан. Поскольку вся система располагалась на полке в нашей аспирантской лаборатории и я опасался, как бы кто-нибудь не сломал это всё случайно или намеренно, то наклеил на радио бумажку с просьбой не трогать руками.

Слева от радио видна задняя панель Sun SPARCstation, которую я приспособил для своих нужд. Не представляю, насколько быстро она работала, но по впечатлениям не быстро, даже совсем. Зато у неё было 96 Мб памяти, много по тем временам, так что проблем с запуском приложений не было. К тому же у Sun SPARCstation была встроенная звуковая карта, поэтому её легко было подключить к радио. Машина работал под управлением Solaris, невероятно стабильной ОС, которая идеально подходила для моего сервиса. На левом краю полки вы видите 500-мегабайтный (да, мегабайтный) SCSI-диск, на котором хранились все фалы. Позади радио выглядывает ИБП, который я добавил позднее.

Что насчёт бутылок? В нашей исследовательской группе была традиция, когда твою работу принимают для выступления на конференции или публикации в журнале, ты покупаешь бутылку ирландского виски (или другого приятного напитка) и отмечаешь с коллегами. Как видите, на каждой бутылке наклейка, поясняющая, в честь какой конференции или журнала она куплена и кто счастливчик.

▍Глава 2: Генератор с двумя радио (2001-2007)


Осенью 2000-го SPARCstation начала проявлять признаки старения, и я начал подыскивать новую машину. Кроме того, я взял старшекурсника Антонио Араузо Азофра (Antonio Arauzo Azofra), чтобы он кое-что сделал для моего проекта. Задачей студента было реализовать новый статистический модуль, достаточно стабильный, чтобы его можно было развернуть на Random.org. Антонио прекрасно справился с задачей и очень помог с конфигурированием «нового» сервера Siemens Scenic 300 PC, который я раздобыл. Также Антонио убедил меня перейти на Debian GNU/Linux (я склонялся к Red Hat), установил железо и ПО, и даже помогал сопровождать систему после того, как закончил обучение в Дублине и вернулся в Испанию, чтобы работать над кандидатской диссертацией.

С лета 2001-го Random.org работал на компьютере Siemens с двумя радио. Сердцем компьютера был Pentium III, работавший с частотой до 500 МГц. Изначально в машине стояло 128 Мб памяти, но позднее я нарастил до 384 Мб. Компьютер был оснащён тремя звуковыми картами Cirrus Logic Crystal CS4281 и двумя FM-тюнерами (один Sony, второй Tensai), которые я купил подержанными примерно за €40 в Blackberry Market в Dublin. На фотографии ниже показано, как всё выглядело. Siemens стоит на двух других компьютерах, а на нём стоят два радио. Хотя система находилась уже не в лаборатории, в моём личном офисе, меня всё же волновали посетители (например, уборщики), которые могли случайно сбить настройки радио и нарушить работу сервиса, поэтому я написал на бумажке просьбу быть осторожнее.


Random.org v2

В качестве ОС я использовал обалденно стабильную Debian GNU/Linux 3.0 (‘Woody’) (это был мой первый опыт работы с Debian, и я всё ещё поклонник —  уважуха команде Debian за превосходную работу). Генератор был сконфигурирован так, чтобы с частотой сэмплирования 8 КГц брать шум с радиотюнеров в виде аудиопотока из 8-битных сэмплов в моно. То есть с каждого радио снималось 1500 случайных битов в секунду, всего 3000 битов в секунду.

▍Глава 3: Система с тремя радио (2007-2009)


С начала 2007-го по конец 2009-го Random.org использовал две разные аппаратные конфигурации. Большую часть 2007-го работал Dell Dimension 4550, который мне подарили Рене Мейер (René Meier) и Джим Доулинг (Jim Dowling) из исследовательского проекта Digital Business Ecosystem. В компьютере стоял Pentium 4 с частотой 2,53 ГГц и 1 Гб памяти. Позднее я установил три звуковые карты C-Media Electronics CM8738, а в качестве радио стояли те же два FM-тюнера, но к ним добавил Akai, купленный за €12 в магазине подержанных товаров в Копенгагене.

В конце 2007-го я заменил Dell Dimension на IBM eServer с 1280 Мб памяти и Pentium III 1,266 ГГц. Хотя процессор был слабее, чем в Dell, eServer легко справлялся с нагрузкой. При этом он был настоящим сервером со SCSI-дисками, хорошо подходившими для моих задач. Звуковые карты и радио остались те же.

Эта аппаратная система с каждого радио генерировала около 3000 битов в секунду. В качестве ОС применялась Debian GNU/Linux, но уже версий 3.1 (‘Sarge’) и 4.0 (‘Etch’). Они были столь же стабильны, как предшественницы, но куда легче в конфигурировании. Очень рекомендую.

▍Глава 4: Random.org сегодня (2009-)


В конце 2009-го Random.org прошёл через реструктуризацию в ответ на увеличение количества клиентов, которым нужна хорошая надёжность и производительность. Теперь это географически распределённая система с несколькими генерирующими случайность узлами. Данные с них подвергаются статистическому тестированию, а затем поток очищенных случайных битов передаётся в облачный хостинг, в котором крутится сервис Random.org. У этой архитектуры выше надёжность и производительность, поэтому Random.org подходит для решения серьёзных задач (например, розыгрышей лотерей). Проверенные временем, случайные числа до сих пор генерируются на основе атмосферных шумов, но железо и ПО далеко ушли от десятидолларового ресивера из Radio Shack, с которого всё начиналось в 1997-м.

▍Глава N: Будущее?


Random.org всё ещё активно развивается, в работе находится много классных проектов. Следите за новостями или подписывайтесь на нашу рассылку (и можете выиграть iPod).



Кстати, о рандоме. На данный момент оценка вероятностей места приземления нашего сервера хабражителями выглядит так:


После конкурса мы попробуем применить метод Монте-Карло и оценить, насколько координаты, поставленные на карте нашими участниками, оказались случайными.
Tags:
Hubs:
Total votes 29: ↑27 and ↓2+25
Comments3

Articles

Information

Website
ruvds.com
Registered
Founded
Employees
11–30 employees
Location
Россия
Representative
ruvds