Как работает рандом орг
Перейти к содержимому

Как работает рандом орг

  • автор:

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

Уже совсем скоро в рамках проекта «Сервер в облаках» у нас полетит воздушный шар, чьи координаты места приземления — настоящий генератор истинно случайных чисел, у которого источником энтропии является движение воздушных масс. На момент написания этого поста более 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).

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

После конкурса мы попробуем применить метод Монте-Карло и оценить, насколько координаты, поставленные на карте нашими участниками, оказались случайными.

  • RUVDS
  • ГСЧ
  • генератор случайных чисел

Генерация случайных чисел с помощью Random.org

Есть такой хороший сервис random.org, который уже не раз упоминался на хабре. Основная задача сайта — генерация случайных чисел с использованием атмосферных шумов. На том же сайте можно найти результаты тестов и сравнения случайных и псевдослучайных генераторов с объяснениями что лучше и почему. В данной статье описывается простенькая библиотека для использования API сайта.

Random.org

На Random.org очень много полезных функций, которые используют генерацию случайных чисел: бросание монеты, кубиков, тасование карт, получение лотерейной комбинации, генерация звуков, битмапов и многое другое. Также есть кастомная генерация за заданным распределением. В принципе, все это не сложно, но интересен тот факт, что генерация происходит с использованием атмосферных шумов и это каким-то магическим образом позволяет получить лучший рандом чем Random.nextInt(). Тут то я подумал, что неплохо бы иметь в запасе библиотеку с таким API и решил её написать.

Поиск
  • Simple Random.Org Java Api — простая либа с методом для генерации целых чисел, но тянет зависимость Apache HTTP Client, аж целых 658 килобайт.
  • Java TRNG client — тут уже все серьезнее. 40 килобайт и генерация чисел с помощью двух(!) сайтов. Да, недостаток в том, что либа создавалась для криптографии, потому там оперирование битами, байтами и вообще все сложно.
API

Random.org предоставляет примитивное HTTP GET API, впрочем ничего большего не нужно. Есть всего 4 типа операций.

Integer Generator

Генерирует случайные целые числа в заданном диапазоне. Например, так выглядит запрос на бросание двух кубиков:
http://www.random.org/integers/?num=2&min=1&max=6&col=1&base=10&format=plain&rnd=new

Sequence Generator

Генерирует последовательность со всеми уникальными целыми числами в заданном диапазоне. По сути то, что делает Collections.shuffle(). Например, так выглядит запрос на перемешивания колоды карт:
http://www.random.org/sequences/?min=1&max=52&col=1&format=plain&rnd=new

String Generator

Генерирует случайную строку заданного размера с возможностью выбора набора символов (цифры, ловер кейс, аппер кейс). Вот так, например, можно сгенерить ник своему персонажу пароль:
http://www.random.org/strings/?num=1&len=12&digits=on&upperalpha=on&loweralpha=on&unique=on&format=plain&rnd=new

Quota Checker

Ну и как вы уже поняли, все это не бесплатно. Хотя не, дают миллион бесплатных бит в сутки. Этого более чем достаточно. А для того, чтобы узнать сколько осталось можно по следующей ссылке:
http://www.random.org/quota/?format=plain
Если вы кликали на три предыдущие ссылки, то вы уже потратили ~1500 бит.

Ошибки

В случае успеха генерации, сервер возвращает код 200, неудачи — код 503. Вот и все ошибки.

Для этого API была написана библиотека из пяти классов на Java, в котором вызов всех вышеописанных методов в простой и понятной форме.

// бросаем кубики IntegerGenerator ig = new IntegerGenerator(); ig.generate(1, 6, 2); // тасуем карты SequenceGenerator sg = new SequenceGenerator(); sg.generate(1, 52); // новый пароль StringGenerator strg = new StringGenerator(); strg.generate(12, 1, true, true, true, true); // сколько бит осталось QuotaChecker qc = new QuotaChecker(); qc.quota(); 

Вроде и все. На github можете посмотреть исходники и скачать либу с оригинальным названием randomorg (6 килобайт).

Как работает рандом?

team

Как компьютеру объясняют выдать случайное число от 1 до 10?

img

03 Sep 2020 в 09:30 #2

RuRuGlobal сказал(а):↑

Как компьютеру объясняют выдать случайное число от 1 до 10?

Нажмите, чтобы раскрыть.

PeepoWut.png?1576808589

Да

03 Sep 2020 в 09:31 #3

Есть заранее готовая таблица чисел без порядка, из которой и берется «случайное» число. Для пущей случайности на такое число оказывают влияние, например кидают в формулку вместе с текущим временем

03 Sep 2020 в 09:33 #4

На рандом.орг берет во внимание погоду вроде.

03 Sep 2020 в 09:33 #5

03 Sep 2020 в 09:36 #6

KEKW.png?1598747039

рандомно

03 Sep 2020 в 09:47 #7

Как-то связано с молниями, посмотри у Топлес выпуск(не помню какой)

03 Sep 2020 в 09:49 #8

RuRuGlobal сказал(а):↑

Как компьютеру объясняют выдать случайное число от 1 до 10?

Нажмите, чтобы раскрыть.

Не знаю, как тебе это поможет, но я погуглил

Спойлер: «Што?»
// random.cpp: определяет точку входа для консольного приложения.
#include «stdafx.h»
using namespace std;
int main(int argc, char* argv[])

img

03 Sep 2020 в 10:14 #9

sentinaxe сказал(а):↑

Есть заранее готовая таблица чисел без порядка, из которой и берется «случайное» число. Для пущей случайности на такое число оказывают влияние, например кидают в формулку вместе с текущим временем

Нажмите, чтобы раскрыть.

ZeroTwoThinking.png

Разве в современном мире это так работает? Я точно знаю, что в самом первом думе и других олдовых играх так было, но сейчас?

03 Sep 2020 в 10:41 #10

Шрек 2 сказал(а):↑

ZeroTwoThinking.png

Разве в современном мире это так работает? Я точно знаю, что в самом первом думе и других олдовых играх так было, но сейчас?

Нажмите, чтобы раскрыть.

Сейчас еще есть искуственный интеллект, но ты видимо не дочитал мое сообщение. Готовый набор чисел не означает, что при запросе ты всегда будешь получать их в том же порядке.

К примеру, у тебя есть набор 35, 16, 132. Ты запрашиваешь числа по порядку и оказываешь на них влияние, например времени, к примеру число*логарифм миллисекунд. Таким образом условно ты получишь примерно такой рандом:

итд. То есть этот самый набор действительно выглядит случайным в какой-то мере, вопрос лишь в выборе фактора, которым ты будешь воздействовать, чтобы не прослеживалась закономерность (как например погода из примера выше). Это если рассматривать алгоритмический подход.

Информация Как работает Random org и что такое реальный рандом.

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.

Digger Man
Любитель Linux

Автор темы
Модератор

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

Что вообще такое рандом в сфере разработки чего либо? Это какой то алгоритм, заданный разработчик ПО, который соблюдает несколько условий, приведу пример своего рандома : берется время до сотых миллисекунд, складываются все числа и делятся на 100 и если число кратно 3 то умножаем на 5, иначе делим на 8, вот такой пример псевдо рандома, найти последовательность в таком алгоритме очень тяжело, но важно, ибо зная этот алгоритм можно всегда находить правильные значения. ​

Что же такое почти реальный рандом? Это рандом представляющий нам random.org. ​

Дело в том, что random org работает с помощью данных атмосферного шума(Atmospheric Noise), объясню вам коротко алгоритм, есть такое физическое явление это атмосферный шум, дело в том, что он является своеобразными радиопомехами, вызванными естественным путем, этими процессами являются разряды молний и подобные физические явления, каждую секунду в мире происходит около 45 вспышек молний(это 3.5 милиона молний в день) помимо этого происходит куча других процессов, влияющих на значение атмосферного шума, такой рандом в отличие от псевдо рандома, имеет полную апериодичность. ​

Какой вывод? Искать какие то закономерности в рандоме каких то лотерей или подобный сервисах бессмысленно, ведь скорее всего они работают по примеру реального рандома. ​

Подробнее можно прочитать на официальном сайте Random org ​
Последнее редактирование: 29 Янв 2023

Dimiano
Потрачен

Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

ну и шриафт конечно
напрягаться надо что бы прочитать
верни дефолт! не мучай людей
не оффтоп: я и так все это знал, но возможно разным людям, которые не изучали этот вопрос будет полезно

Digger Man
Любитель Linux

Автор темы
Модератор

ну и шриафт конечно
напрягаться надо что бы прочитать
верни дефолт! не мучай людей
не оффтоп: я и так все это знал, но возможно разным людям, которые не изучали этот вопрос будет полезно

сделал шрифт побольше

Gorskin

Проверенный

Расскажу кратко про рандом который используется в казино, лотереях и прочих.
Берётся так называемый атмосферный шум и к нему приписывается условие. А условие такое: 90-10 или же 90-5. Где большее число это варианты проигрыша. Более справедливые казино используют от 80-20 и а то и 70. Факт в том что это не чистый рандом, ведь казино не выгодно будет если вы будете выигрывать 50 на 50. Так называемые «качели рандома» им не выгодно использовать.

Freym
Известный

+rep думал такое никто не напишет

kin4stat
mq-team

Всефорумный модератор

всем похуй. Вытаскивать данные с реального атмосферного шума — дорого, а делать запрос на рандом орг — накладно. Проще обычный ГПСЧ заюзать и похуй. На той же аризоне рандома каждую секунду происходит столько, что ты никак не сможешь закономерность узнать. Ибо ГПСЧ стал ГСЧ из-за реальных людей.

Да и описал ты процесс взятия рандома на random.org тоже хуево. Как будто просто научпоп видосик посмотрел и выебнуться решил

lumenphr
Новичок
Всем привет, увидел тут пару тем по поводу рандома, люди пытаются находить какие то последовательности в рандоме и найти закономерности, я бы хотел разобрать несколько видов рандома и рассказать, что такое реальный рандом в сфере разработки.​
Что вообще такое рандом в сфере разработки чего либо? Это какой то алгоритм, заданный разработчик ПО, который соблюдает несколько условий, приведу пример своего рандома : берется время до сотых миллисекунд, складываются все числа и делятся на 100 и если число кратно 3 то умножаем на 5, иначе делим на 8, вот такой пример псевдо рандома, найти последовательность в таком алгоритме очень тяжело, но важно, ибо зная этот алгоритм можно всегда находить правильные значения.​
Что же такое почти реальный рандом? Это рандом представляющий нам random.org.​
Дело в том, что random org работает с помощью данных атмосферного шума(Atmospheric Noise), объясню вам коротко алгоритм, есть такое физическое явление это атмосферный шум, дело в том, что он является своеобразными радиопомехами, вызванными естественным путем, этими процессами являются разряды молний и подобные физические явления, каждую секунду в мире происходит около 45 вспышек молний(это 3.5 милиона молний в день) помимо этого происходит куча других процессов, влияющих на значение атмосферного шума, такой рандом в отличие от псевдо рандома, имеет полную апериодичность.​
Какой вывод? Искать какие то закономерности в рандоме каких то лотерей или подобный сервисах бессмысленно, ведь скорее всего они работают по примеру реального рандома.​
Подробнее можно прочитать на официальном сайте Random org​

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

Относительно бага ид, могу его подтвердить, ведь это пошло от меня лол.
Расскажу самого начала на простом примере, в 19 году до обновления крафта можно было неограниченно крафтить предметы просто перезаходя в игру. И на тот момент я только изучал всю эту фигню, так вот, в тот момент у меня уже были подозрения на ИД, и подтвердились они так, был онлайн в районе 350, я начинаю крафтить на идшниках в районе 100, крафчу — перезахожу, и таким образом я смог скрафтить 7 предметов каждый с первой попытки. А заходя на 300е идшники ничего не крафтилось.
Это самый простой пример, сейчас очевидно все сложнее, а с добавлением вайсити все нестабильнее)
Сейчас они добавили ограничение на крафт, систему слива когда ты ничего не можешь скрафтить и выбить — как раз появилось в 19 году.

Ответ Альберта кстати посмотрите тестирование систем вероятностей и все поймете xd

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *