Уже совсем скоро в рамках проекта «Сервер в облаках» у нас полетит воздушный шар, чьи координаты места приземления — настоящий генератор истинно случайных чисел, у которого источником энтропии является движение воздушных масс. На момент написания этого поста более 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-го, когда я работал на стартап, разрабатывавший движок для азартных онлайн-игр. Это был маленький проект: четыре человека делали прототип в надежде поднять денег для продолжения разработки. Движок имел базовую функциональность и мог дополняться модулями различных игр. Мы реализовали прототип самого движка и нескольких игровых модулей, которые позволяли в браузере играть в лотерею, блэкджек и игровые автоматы.
Модуль random
Модуль random предоставляет функции для генерации случайных чисел, букв, случайного выбора элементов последовательности.
random.seed([X], version=2) — инициализация генератора случайных чисел. Если X не указан, используется системное время.
random.getstate() — внутреннее состояние генератора.
random.setstate(state) — восстанавливает внутреннее состояние генератора. Параметр state должен быть получен функцией getstate().
random.getrandbits(N) — возвращает N случайных бит.
🎲 Как работает Random в играх
random.randrange(start, stop, step) — возвращает случайно выбранное число из последовательности.
random.randint(A, B) — случайное целое число N, A ≤ N ≤ B.
random.choice(sequence) — случайный элемент непустой последовательности.
random.shuffle(sequence, [rand]) — перемешивает последовательность (изменяется сама последовательность). Поэтому функция не работает для неизменяемых объектов.
random.sample(population, k) — список длиной k из последовательности population.
random.random() — случайное число от 0 до 1.
random.uniform(A, B) — случайное число с плавающей точкой, A ≤ N ≤ B (или B ≤ N ≤ A).
random.triangular(low, high, mode) — случайное число с плавающей точкой, low ≤ N ≤ high. Mode — распределение.
random.betavariate(alpha, beta) — бета-распределение. alpha>0, beta>0. Возвращает от 0 до 1.
random.expovariate(lambd) — экспоненциальное распределение. lambd равен 1/среднее желаемое. Lambd должен быть отличным от нуля. Возвращаемые значения от 0 до плюс бесконечности, если lambd положительно, и от минус бесконечности до 0, если lambd отрицательный.
random.gammavariate(alpha, beta) — гамма-распределение. Условия на параметры alpha>0 и beta>0.
random.gauss(значение, стандартное отклонение) — распределение Гаусса.
random.lognormvariate(mu, sigma) — логарифм нормального распределения. Если взять натуральный логарифм этого распределения, то вы получите нормальное распределение со средним mu и стандартным отклонением sigma. mu может иметь любое значение, и sigma должна быть больше нуля.
random.normalvariate(mu, sigma) — нормальное распределение. mu — среднее значение, sigma — стандартное отклонение.
random.vonmisesvariate(mu, kappa) — mu — средний угол, выраженный в радианах от 0 до 2π, и kappa — параметр концентрации, который должен быть больше или равен нулю. Если каппа равна нулю, это распределение сводится к случайному углу в диапазоне от 0 до 2π.
random.paretovariate(alpha) — распределение Парето.
random.weibullvariate(alpha, beta) — распределение Вейбулла.
Все довольно просто, и теперь вы можете генерировать случайные числа и последовательности. Удачи в ваших изысканиях!
Для вставки кода на Python в комментарий заключайте его в теги
Источник: pythonworld.ru
Рандом — это что такое?
Если вы хотите узнать все о рандоме, то вам не обязательно быть геймером, как многие полагают. Дело в том, что данное понятие скорее относится к компьютерам в целом, чем конкретно к компьютерным играм. Этот термин используется очень часто, поэтому вам обязательно нужно знать, что он означает, как может проявляться и как будет влиять на игру или же любую программу, которая ему подвержена. На самом деле, рандом — это общепринятый термин, который был взят из английского языка, но у него в русском языке имеется свой аналог. Что это за аналог и что означает этот термин вообще вы узнаете далее.
Что такое рандом?
Многие геймеры и обычные пользователи, впервые столкнувшись с данным термином, сразу же задают вопрос — что же это такое? Как это может на них повлиять? В действительности рандом — это то, что влияет абсолютно на всех практически постоянно. Как уже было сказано ранее, в русском языке имеется аналог данному термину — это «случайность», «случайный».
Таким образом, можно сделать вывод, что рандом — это некоторые случайные события, которые происходят в игре или в программе, у них нет запрограммированного времени или порядка активации, то есть их появление предсказать попросту невозможно. С помощью рандома генерируется очень многое в компьютерных играх, и с ним процесс становится гораздо более интересным — например, в «Майнкрафте» каждый мир генерируется случайным образом, подчиняясь рандому, так что каждая новая игра будет уникальной, не похожей на предыдущие. Однако о плюсах и минусах этого действия речь пойдет далее, пока что вы уже поняли, что рандом — это некие случайные события и действия, которые генерируются без закономерности.
Рандомная стрельба
В некоторых случаях рандом можно трактовать и иными способами, которые не совсем подходят под стандартное определение. Например, в шутерах рандом — это беспорядочная стрельба, выстрелы наугад. Естественно, в некоторых играх присутствует рандом сразу в нескольких проявлениях.
К примеру, вам может выпадать случайное оружие из убитых противников, но при этом вы также можете вести рандомный огонь. Однако вам нужно аккуратнее себя вести, когда вы будете затевать подобное мероприятие, потому что в многопользовательских играх за рандомной стрельбой часто пытаются скрыть использование чита. И тогда вас могут забанить за обычный рандом. Что это в «Варфейс» многие уже знают — дело в том, что в данном шутере очень жесткий контроль читов, и если вы часто ведете рандомный огонь, вас могут забанить даже в том случае, если при этом вы не использовали чит.
Корейский рандом
Отдельно стоит поговорить про корейский рандом в играх. Что это такое? Все довольно просто, так называется не самый приятный для пользователей рандом, выстраивающий полноценные последовательности. Проще говоря, корейский рандом — это активация случайных событий подряд длительное время или же, наоборот, их полное отсутствие.
К сожалению, это не сбой, не чит, не баг — это обычная случайность, которая многим приносит досаду, так как убивает интерес от игры. Ведь если вам будет постоянно падать дроп, который должен выпадать раз в полчаса, вы слишком быстро соберете нужные материалы, деньги или оружие. А если дропа не будет вообще, то будет еще хуже, так как вы не сможете нормально прокачиваться. Во многих многопользовательских играх встречается подобный рандом — «Дота», «Лайнейдж», «Ворлд оф Варкрафт» и так далее. Естественно, разработчики стараются избегать подобного и постоянно пытаются усовершенствовать генераторы случайных чисел, отвечающих за рандомизацию в играх, но это не всегда действует.
Плюсы рандома
Пришло взглянуть более внимательно на то, что хорошего и плохого привносит в компьютерные игры рандом. «Дота», «Контра» и многие другие наиболее популярные проекты современности используют рандом довольно часто, поэтому вы вряд ли будете удивлены тому, что он может добавить в игру много интересного и полезного. Например, рандом позволяет вам более многогранно развивать своего персонажа, не продвигаясь по заранее запланированному для него пути. Также в игре появляется разнообразие, элемент неожиданности, так что вы можете получить максимум удовольствия от прохождения.
Минусы рандома
Самым главным минусом рандома является факт того, что вы не можете контролировать игровой процесс в полной мере. Вы можете максимально качественно прокачивать своего героя, делать все просто идеально, но рандом может предлагать вам только плохие расклады, из-за чего ваши усилия пойдут прахом. Так что многие геймеры не очень любят, когда в играх слишком много рандома — и они точно не играют в «рогалики», жанр игр, в которых все построено на рандоме. Каждый уровень там генерируется случайным образом, как и все оружие и монстры на нем, так что если вы хотите увидеть на идеальное проявление рандома в компьютерной игре, то это вам нужен жанр Rogue-like, который буквально заполнен случайностями.
Источник: fb.ru