Как стать автором
Обновить

Скирмионы помогут генерировать настоящие случайные числа

Время на прочтение 3 мин
Количество просмотров 2.1K
Блог компании Cloud4Y Алгоритмы *Математика *Научно-популярное Физика

По-настоящему случайные числа требуются для нужд кибербезопасности, в играх, для научного моделирования и т. д. Казалось бы, в чём проблема – получить случайное число? Компьютеры легко справляются с этой задачей. Однако на деле большинство случайных чисел, выдаваемых ими, не являются по-настоящему случайными. 

Группа физиков из Университета Брауна разработала метод, который потенциально может генерировать миллионы случайных чисел в секунду. В нём используется поведение скирмионов — крошечных магнитных аномалий, возникающих в некоторых двумерных материалах.

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Комментарии 0

Совершенно случайные числа без повторения

Время на прочтение 1 мин
Количество просмотров 2.9K
Чулан

Задача


Сегодня столкнулся с задачей сделать 4 случайных числа в заданном диапазоне, без повторения, казалось бы такая тривиальная задача, но!
Обычное rand($min, $max) не давало нужного результата, особенно при малом числе $max ~ 15;
То есть:

$number[0] = rand(1, $max);
$number[1] = rand(1, $max);
$number[2] = rand(1, $max);
$number[3] = rand(1, $max);


Могло в итоге выдать 2, 2, 3, 9 — эти повторения мне нужны не были, спросив совета на хабраканале, freefd дал ссылку на перловый вариант cookbook, но реализация мне не понравилась своей громозкостью и нелапидарностью.

Решение


В итоге проявив смекалку появилось вот такое решение:

function generateFourRandomNumber ($maxCount){
$numbers = range(1, $maxCount);
shuffle($numbers);
return array($numbers[0], $numbers[1], $numbers[2], $numbers[3]);
}


Итого


Вуаля! Просто лапидарно, и даже странно :)
несколько НО:
  • решение подходит для малых максимальных значений, иначе потом shuffle будет стоить слишком дорого
  • функцию легко переделать по вид generateRandomNumber ($maximum, $count)


UPD


Спасибо duncanf1 за еще более короткий вариант:
function generateRandomNumber ($maximum, $count){
return array_rand(range(0, $maximum), $count);
}
Всего голосов 18: ↑9 и ↓9 0
Комментарии 23

Удивительное рядом или как поиздеваться над биржевыми аналитиками (при помощи Excel)

Время на прочтение 2 мин
Количество просмотров 6.6K
Алгоритмы *
Из песочницы
С каналов вроде CNBC люди в костюмах и дорогих аксессуарах вещают с умным видом о предположительном движении того или иного курса. В качестве визуальной помощи они используют графики курсов с нарисованными поверх них линиями разнообразных индикаторов и фигур технического анализа.

Индикатор (в контексте этой статьи) – это просто какая-то функция над ценой. Например, скользящее среднее (moving average). Существуют сотни разных индикаторов.

Фигура технического анализа – это какой-то известный паттерн, например, треугольник, двойное дно, голова и плечи. Фигур этих тоже сотни.
Читать дальше →
Всего голосов 73: ↑51 и ↓22 +29
Комментарии 66

Генерация псевдослучайных чисел

Время на прочтение 5 мин
Количество просмотров 128K
Алгоритмы *
Довольно часто программисты в своей работе встречаются с необходимостью работать со случайными числами. Чаще всего случайные числа требуются в задачах моделирования, численного анализа и тестирования, но существует и множество других весьма специфических задач.
Конечно, во всех современных языках программирования есть функция random или её аналоги. Эти функции чаще всего дают действительно хорошие псевдослучайные числа, но мне всегда было интересно, как эти функции работают.
В этом топике я постараюсь объяснить, как работает линейный конгруэнтный метод (который чаще всего используется в функции random), и метод получения случайных чисел с помощью полиномиального счётчика (который часто используется для тестирования аппаратуры).
Читать дальше →
Всего голосов 39: ↑34 и ↓5 +29
Комментарии 36

Быстрый генератор случайных чисел из вакуумного «шума»

Время на прочтение 2 мин
Количество просмотров 6.8K
Криптография *
Канадский физик Бен Сассмэн (Ben Sussman) с коллегами сконструировали исключительно быстрый и конструктивно простой генератор случайных чисел на базе вакуумных флуктуаций поля.

Вселенная устроена таким образом, что в каждой точке пространства постоянно возникают виртуальные частицы со значительной энергией. В квантовом масштабе вакуум представляет собой бешено активный, «живой» субстрат, где частицы рождаются и аннигилируют, в сумме давая ноль. Хотя эти частицы являются абстрактными объектами квантовой теории поля, но они проявляют себя в конкретных физических процессах, например, эффекте Казимира — взаимном притяжении проводящих незаряженных тел. И вот найдено ещё одно полезное применение вакуумного «шума» — генерация случайных чисел.
Читать дальше →
Всего голосов 57: ↑46 и ↓11 +35
Комментарии 40

Новый способ генерирования случайных чисел защитит данные от хакеров

Время на прочтение 1 мин
Количество просмотров 1.8K
Блог компании Датавед
Перевод
Канадский физик Бен Сассмэн предложил новый способ генерирования случайных чисел. Он разрабатывает квантовые технологии в Национальном исследовательском совете в Оттаве. Его метод опирается на тот факт, что в квантовом масштабе события нарушают привычные представления о причине и следствии и могут развиваться идеально случайным образом.

Читать дальше о том, как получать по-настоящему случайные данные в больших количествах →
Всего голосов 14: ↑4 и ↓10 -6
Комментарии 7

Анализ случайных последовательностей с помощью простых графических тестов

Время на прочтение 4 мин
Количество просмотров 9.2K
Информационная безопасность *

Аннотация


Данная статья содержит описание метода графического тестирования случайных последовательностей, на соответствия критериям истинно случайным последовательностям. В статье приводиться обзор метода «Приблизительной энтропии» входящего в состав пакета тестирования NIST, также приводятся сравнительный анализ последовательностей полученных при помощи ГПСЧ описанных в статье Ocelot Генерация случайных чисел на микроконтроллерах.
Читать дальше →
Всего голосов 27: ↑26 и ↓1 +25
Комментарии 2

Случайные числа. Take Two

Время на прочтение 3 мин
Количество просмотров 30K
Блог компании Positive Technologies Информационная безопасность *
Недавно вышла замечательнейшая работа про атаки на генератор случайных чисел в PHP, однако в ней никаких практических примеров представлено не было. Мы провели собственное исследование данной темы, которое вылилось в создание набора инструментов для реализации подобного рода атак.
Читать дальше →
Всего голосов 64: ↑60 и ↓4 +56
Комментарии 40

Подробно о генераторах случайных и псевдослучайных чисел

Время на прочтение 11 мин
Количество просмотров 288K
Информационная безопасность *Алгоритмы *Математика *
Из песочницы
На Хабре и в сети часто начали появляться статьи, посвященные уязвимостям генераторов случайных чисел. Данная тема крайне обширна и является одной из основных в криптографии. Под катом находится описание случайных чисел от A до Z. Статья является результатом свободного перевода цикла статей из одного западного блога и личных дополнений автора. Основная цель — получить feedback и поделиться знаниями.
image
Читать дальше →
Всего голосов 75: ↑71 и ↓4 +67
Комментарии 21

Sparkfun.com FREE day или *как вы относитесь к recaptcha*

Время на прочтение 5 мин
Количество просмотров 17K
Тестирование IT-систем *
Перевод
Вдохновение.

Пока 55% ненавидит…

А я выбрал «другое». Потому что люблю. Но не за то, что считаю удобнее других, а за то, что…
Читать дальше →
Всего голосов 65: ↑51 и ↓14 +37
Комментарии 14

Безопасность случайных чисел в Python

Время на прочтение 5 мин
Количество просмотров 26K
Блог компании Positive Technologies Информационная безопасность *Разработка веб-сайтов *
Туториал
Эта статья – вторая в ряде публикаций, посвященных уязвимостям генераторов псевдослучайных чисел (ГПСЧ).

В последнее время появился целый ряд публикаций, описывающих уязвимости ГПСЧ, начиная от самых основ ([1]) и заканчивая непосредственно уязвимостями в различных языках программирования и реализованных на их основе CMS и другого ПО ([2],[3],[4]).

Эти публикации популярны по той причине, что ГПСЧ – основа многих аспектов безопасности веб-приложений. Псевдослучайные числа/последовательности символов используются для обеспечения безопасности веб-приложений в:

  • генерации различных токенов (CSRF, токены сброса пароля и т.д.);
  • генерации случайных паролей;
  • генерации текста в CAPTCHA;
  • генерации идентификаторов сессий.

В прошлой статье мы, опираясь на исследования George Argyros и Aggelos Kiayias ([3]) научились предугадывать случайные числа в PHP на основе PHPSESSID и уменьшать различными способами энтропию псевдослучайных чисел.

Сейчас мы рассмотрим ГПСЧ в веб-приложениях, разработанных на языке Python.
Читать дальше →
Всего голосов 64: ↑57 и ↓7 +50
Комментарии 11

Пять удивительных математических фактов

Время на прочтение 4 мин
Количество просмотров 144K
Математика *
Перевод
Для начала небольшой спойлер

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

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

Некоторые люди считают математику скучной. Следующие примеры показывают, что она какая угодно, но не такая
Читать дальше →
Всего голосов 167: ↑141 и ↓26 +115
Комментарии 271

Концепт «правильного» определения случайного победителя

Время на прочтение 3 мин
Количество просмотров 116K
Алгоритмы *
Здравствуйте.

Знаете, иногда я вижу, что группе людей нужно выбрать некий случайный объект. Например, дежурного, если нет графика, или он запутался (по поводу «правильных» графиков дежурств я бы тоже рассказал). Или же, что меня начало в последнее время раздражать, победителя в каком-либо конкурсе репостов.

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

Победителя. В лучшем случае мы так же получим видео, как организатор при помощи random.org выбирает номер, а затем находит победителя в какой-нибудь таблице.

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

Я же считаю, что системы должны быть спроектированы таким образом, чтобы совершить нечто неправильное в них не было возможно, поэтому…

Один из вариантов привнесения в систему справедливости...
Всего голосов 25: ↑15 и ↓10 +5
Комментарии 59

Инновационный метод производства энтропии

Время на прочтение 5 мин
Количество просмотров 11K
Криптография *
I am chaos. I am the substance from which your artists and scientists build rhythms. I am the spirit with which your children and clowns laugh in happy anarchy. I am chaos. I am alive, and I tell you that you are free.
— Эрис, богиня хаоса, раздора и путаницы

Порядок невозможен без беспорядка. Программисты часто ныряют в хаос в поиске гениальных мыслей, случайных чисел и волшебных коэффициентов, которыми должно обладать каждое уважающее себя приложение. В этой статье я расскажу, как практически из ничего получить высококачественные образцы случайности, которыми можно, например, поделиться со своими друзьями-хаосопоклонниками.

Предупреждение для юристов, политиков и других роботов: это полушуточная статья.
Читать дальше →
Всего голосов 44: ↑36 и ↓8 +28
Комментарии 8

Случайные числа и детерминистичная симуляция

Время на прочтение 12 мин
Количество просмотров 30K
Блог компании Intel Криптография *Программирование *


Совсем недавно, помогая коллеге в решении вопроса о неповторяемости работы ряда тестов, я в очередной раз натолкнулся на задачу симуляции устройства, генерирующего последовательности случайных чисел. В этой статье я расскажу о том, какие сложности были обнаружены, какой подход к их разрешению был выбран, и как я проверял, что новое решение лучше предыдущего. Сразу отмечу, что вопрос создания и верификации случайных последовательностей очень тонкий, и почти никакое решение не может считаться в нём окончательным. Буду признателен за комментарии и исправления.

Вначале я кратко расскажу о предметной области аппаратных и псевдослучайных генераторов, об их характеристиках и требованиях к ним. Затем перейду к своему частному случаю — области программной симуляции вычислительных систем, и к конкретной задаче, которую нужно было решить.


Иногда самый надёжный способ получить случайное число — взять его из справочника. Источник изображения: www.flickr.com/photos/nothingpersonal/337684768
Читать дальше →
Всего голосов 38: ↑36 и ↓2 +34
Комментарии 22

Статистическая проверка случайности двоичных последовательностей методами NIST

Время на прочтение 16 мин
Количество просмотров 54K
Блог компании Код Безопасности Криптография *


Любой, кто, так или иначе, сталкивался с криптографией, знает, что без генераторов случайных чисел в этом деле не обойтись. Одно из возможных применений таких генераторов, например, – генерация ключей. Но не каждый при этом задумывается, а насколько «хорош» тот или иной генератор. А если и задумывался, то сталкивался с тем фактом, что в мире не существует какого-либо единственного «официального» набора критериев, который бы оценивал, насколько данные случайные числа применимы именно для данной области криптографии. Если последовательность случайных чисел предсказуема, то даже самый стойкий алгоритм шифрования, в котором данная последовательность будет использоваться, оказывается, уязвим — например, резко уменьшается пространство возможных ключей, которые необходимо «перебрать» злоумышленнику для получения некоторой информации, с помощью которой он сможет «взломать» всю систему. К счастью, разные организации все же пытаются навести здесь порядок, в частности, американский институт по стандартам NIST разработал набор тестов для оценки случайности последовательности чисел. О них и пойдет речь в данной статье. Но сначала — немного теории (постараюсь изложить не нудно).

Читать дальше →
Всего голосов 33: ↑31 и ↓2 +29
Комментарии 21

«Идеальное» бросание монеты: The NIST Randomness Beacon

Время на прочтение 5 мин
Количество просмотров 8.7K
Информационная безопасность *Криптография *
Туториал


Говоря статистическим языком — «случайная переменная» — это функция, выдающая какое-то значение, неизвестное до определенного времени и постоянное после.

C 5 сентября 2013 года NIST каждую минуту публикует случайное число размером 512 бит. Это число, предыдущее число, время, когда оно было сгенерировано и еще кое-какая информация подписываются цифровой подписью NIST, так что можно легко проверить, что число было сгенерировано именно NIST.

Как это работает и зачем?
Всего голосов 24: ↑23 и ↓1 +22
Комментарии 13

АЦП в качестве генератора случайных чисел

Время на прочтение 2 мин
Количество просмотров 37K
Схемотехника *

Доброго времени суток! Решил рассказать о простом и интересном способе получения честных случайных чисел на микроконтроллерах, не имеющих на борту аппаратного генератора случайных чисел. Достаточно, чтобы у микроконтроллера был АЦП и один свободный вход. Подробности под катом.
Читать дальше →
Всего голосов 28: ↑20 и ↓8 +12
Комментарии 34

Монте-Карло моделирование в Mathcad Express

Время на прочтение 4 мин
Количество просмотров 12K
Блог компании Нерепетитор.ру Алгоритмы *Математика *
Туториал
На Хабре много статей посвящено алгоритмам Монте-Карло, например, вот эта, вчерашняя. Как основная идея, так и реализация методов весьма несложная, но небольшим препятствием может служить отсутствие под рукой подходящих инструментов для моделирования. Тем из читателей, для кого проблема актуальна, советую использовать бесплатный математический редактор Mathcad Express, про который я и пишу в моем блоге.

Mathcad Express — это «легкая» версия известного пакета PTC Mathcad Prime, в которой большая часть функционала выключена. Тем не менее, датчики псевдослучайных чисел остаются доступными, что позволяет реализовать (довольно быстро и наглядно) различные статистические модели на основе алгоритмов Монте-Карло. Сразу оговорюсь, что некоторые решения будут не самыми лучшими, с точки зрения пользователей коммерческой версии Mathcad Prime, однако, они гарантированно не выведут нас за пределы функционала бесплатного Mathcad Express.

Напомню, что алгоритмы Монте-Карло — это общее название группы численных методов, основанных на программном создании определенной последовательности псевдослучайных чисел, моделирующей тот или иной эффект, например, последовательность отказов техники. Получив большое число реализаций случайного процесса, можно надеяться, что его вероятностные характеристики совпадут с аналогичными величинами решаемой задачи «реального мира». Файл с дальнейшими расчетами в форматах Mathcad и XPS лежит здесь.

Часть 1. Как сгенерировать выборку псевдослучайных чисел


В Mathcad Express доступен ряд генераторов псевдослучайных чисел, создающих выборки псевдослучайных данных с различными законами распределения. Для создания вектора из N псевдослучайных чисел нужна всего лишь одна строка Mathcad-документа. Например сгенерировать N=5 псевдослучайных чисел с нормальным распределением (нулевым средним и единичной дисперсией) можно так:



Векторы случайных чисел удобно визуализировать на графиках так: одна выборка (т.е. компоненты одного из случайных векторов T1) по оси абсцисс, а другая выборка (другой случайный вектор T2)  – по оси ординат. На следующем рисунке приведены графики пар псевдослучайных чисел для экспоненциального (слева) и нормального (справа) распределения. Параметры распределений задаются в формулах над графиками.



Читать дальше →
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 0