#%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D1%8B%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%B0

2025-12-06

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

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

habr.com/ru/articles/973894/

#случайность #случайные_числа #псевдослучайные_числа #программирование #python #numpy #гипотезы #чёрный_ящик #открытая_система

2025-08-27

Как устроен генератор случайных чисел в VBA Excel Ч.3

В предыдущих частях работы ( Часть 1 , Часть 2 ) мы разобрали, что такое линейный конгруэнтный метод (ЛКМ), и как на его основе работает функция Rnd(), вшитая в скриптовый язык VBA, созданный Microsoft. Именно эта функция и "ответственна" за генерацию псевдослучайных чисел. Мы поняли, как ведет себя функция, если в качестве ее аргумента ввести число меньшее либо равное 0. Также мы выяснили, что эта функция работает с мнимым и реальными значениями своих аргументов, также мы поняли, как соотносятся некоторые мнимые значения аргумента функции с их реальными значениями. В третьей части исследования речь пойдет в основном о том, каким образом функция Rnd() взаимодействует с аргументами в виде дробных чисел, а также о том, как ведет себя функция, при вводе в качестве ее аргумента больших (по модулю) чисел. Как оказалось – обе эти темы взаимосвязаны. Итак – поехали! Все случайное неслучайно...

habr.com/ru/articles/940480/

#случайные_числа #генераторы_случайных_чисел #excel #vbaмакросы #линейный_конгруэнтный_метод #псевдослучайные_числа #псевдослучайные_генераторы #генератор_случайных_чисел #ieee754 #microsoft_office

2025-08-07

(Не)случайные числа в VBA Excel Ч. 2

Вторая часть из моего цикла исследований, посвященного генерации псевдослучайных чисел в скриптовом языке VBA, используемого в офисных приложениях от Microsoft. Читать далее!

habr.com/ru/articles/933472/

#случайные_числа #vba #vbaмакросы #excel #линейный_конгруэнтный_метод #псевдослучайные_числа #псевдослучайные_генераторы #генератор_случайных_чисел #модульная_арифметика #ieee754

2025-08-01

(Не)случайные числа в VBA Excel Ч. 1

Первая часть из моего цикла исследований, посвященного генерации псевдослучайных чисел в скриптовом языке VBA, используемого в офисных приложениях от Microsoft. Погрузиться в мир псевдослучайных чисел!

habr.com/ru/articles/932850/

#случайные_числа #vba #excel #линейный_конгруэнтный_метод #случайности_не_случайны #модульная_арифметика #псевдослучайные_генераторы #псевдослучайные_числа

2025-06-22

Математика бэкдора в Dual EC DRBG

Dual EC DRBG - нашумевшая схема генератора псевдослучайных чисел, который был стандартизован, несмотря на потенциальный бэкдор. Математическая часть данного бэкдора интересна и сама по себе, но особенно - как важная веха в истории современной криптографии. Статья посвящена математической части бэкдора и в деталях объясняет то, почему он работает. Для понимания потребуется хотя бы минимальное знакомство с основными понятиями алгебры и криптографии.

habr.com/ru/articles/920752/

#бэкдор #криптография #случайности_не_случайны #случайные_числа #эллиптические_кривые

2024-07-31

[Перевод] Находим случайный seed, решающий задачу с LeetCode

У меня есть хобби — решать задачи LeetCode непредназначенным для этого образом, часто при помощи запутанных однострочников. Такие самостоятельно накладываемые ограничения делают задачки интереснее и заставляют искать нестандартные решения. Одним из ежедневных челленджей LeetCode была такая задача (я немного упростил её для понятности): Есть список из уникальных строк битов, каждая из которых имеет длину . Сгенерировать новую строку длиной , отсутствующую в этом списке. Например, если у нас есть список "010", "110", "111" , то возможным решением будет "001" . Задача с LeetCode имеет большой набор тестов — 183 тестовых сценариев с , а точную формулировку задачи можно найти здесь . Я решил её, подобрав такое случайное порождающее значение (seed), что случайно генерируемые строки битов проходили бы все тестовые сценарии. Вот код решения: class Solution:
def findDifferentBinaryString(self, nums: List[str]) -> str:
random.seed((69299878 + sum(ord(c)*(i*j+111) for (i, n) in enumerate(nums) for (j, c) in enumerate(n))) % 999999999)
return ''.join(random.choice('01') for _ in nums) Можете попробовать это решение самостоятельно (оно должно работать, если LeetCode не обновил свой набор тестов. Если это произошло, сообщите мне об этом). Ниже я расскажу, как это сделал.

habr.com/ru/companies/ruvds/ar

#ruvds_переводы #leetcode #челлендж #нестандартные_решения #задачи_для_программистов #случайные_числа #хэшфункции

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst