random. Генерация псевдослучайных чисел на компьютере
Ғылым және технология
Описывается линейный конгруэнтный метод генерации псевдослучайных чисел. Это один из самых популярных методов, используемых в компьютерах.
Моя группа ВКонтакте electronics_nn
Выражаю благодарность тем, кто поддерживает меня финансами.
Реквизиты для финансовой поддержки можно найти в
/ foo52ru
Пікірлер: 253
Я до сих пор жду продолжение искусственной жизни.
@foo52ru
5 жыл бұрын
Я частично написал код второго мира, реализована только часть задуманных команд, но уже можно запускать и смотреть на бегающих ботов. Но это отбирает слишком много времени, пока забросил. Виноват. Всё собираюсь дописать, но другие идеи покоя не дают. Обещаю исправиться.
@mihail_redov
5 жыл бұрын
Богдан, ты ни один) Хотя я уже начал забывать об этом)
@PetroBabii
5 жыл бұрын
спасибо што читаеш и отвичаеш жду делай на славу
@vladislavunderoak4323
5 жыл бұрын
@@foo52ru, спасибо, что делишься с нами такой увлекательной информацией.
@TEENASPECT
5 жыл бұрын
@@foo52ru а тема с клеточными автоматами по типу life не привлекает?
Классный урок, очень доступное объяснение, понятно что криптография - это очень емкая тема, но нужно уметь говорить просто о сложно что и делает автор! Спасибо
У вас очень интересные ролики, пожалуйста снимайте их почаще! Лайк, подписка само собой.
Все круто, у вас очень годный ламповый контент👍
Спасибо вам за видео, всегда очень интересно и все понятно объясняете!
Спасибо за старания, весьма интересно!
08:17 "Если в интернете не врут, то сейчас мне должны лайки ставить" Орнул в голос и поставил лайк
@axionet_dev
3 жыл бұрын
Я поставил лайк и сразу же у слищел об этом.
@toms_ekb
3 жыл бұрын
А я ещё вначале ролика заметил среди мелькающих цифр слово "ШОК!". Даже ткнул паузу, и нашёл этот кадр, чтобы убедиться, что не показалось. Поэтому в конце ролика совсем не удивился, когда среди мелькающих цифр увидел повторяющиеся "LIKE", "LIKE", "LIKE" :)
очень рады видеть. Как же я жду продолжение искусственной жизни....
Последние видосы топ, удачи)))))
Мегакрутой канал, респект автору!
Большое спасибо за ваши видео
Ну а я точно знаю, что может генерировать поток лайков и подписку на канал - твой годный контент. Спасибо большое, очень интересно.:)
Делаешь уникальный контент, продолжай!
Спасибо за видео очень интересно и полезно
Просто и понятно, как и сам алгоритм. Жаль тема не была продолжена для ГСЧ и выше.
Огромное спасибо, очень полезно.
Качественно и интересно супер спасибо класс
Это было мозгосшибательно но суть уловил струдом ) Спасибо) хотелось бы продолжение с подводной лодкой, даёшь 20 тыс. лье под водой)
Спасибо за подробные разъяснения! Теперь имею представление, что не всё, что называется рандомом в программировании, рандомно
объяснил всё как бог
Отличное качество видео супер класс
Спасибо, интересно...
Годно
очень круто!
Очень интересно и поняио
6:15 как все просто оказывается. вот спасибо два слова и я прозрел, как после прочтения энциклопедии)
божественно
спасибо! и отдельное спасибо тому маньяку.
Интересное видео😀. Сделай пожалуйста визуализацию гспч
В интернете не врут! Как раз в этот момент лайк ставил))
Вы гениус
Класс
Как говорила одна черепаха: "Случайности не случаны!"...
@unex6859
5 жыл бұрын
Альберт Тлюкабиров этой черепахой был Альберт Энштейн
@Zeding_Stuff
4 жыл бұрын
@@unex6859 кстати да, Энштейн рили был детерминистом и срался в переписке с Бором и Планком по поводу абсолютных случайностей в квантовой физике. Как выяснилось, Энтшейн был не прав и, например, период полураспада ядер урана абсолютно ни от чего не зависит. Он просто происходит сам по себе. Абсолютная случайность.
@testman1865
4 жыл бұрын
И правильно срался :) Случайность - это событие без причины. То, что мы не в состоянии детерминировать квантовый мирок, не означает, что там всё происходит беспричинно.
@Zeding_Stuff
4 жыл бұрын
@@testman1865 ну, круто. Энивей каждый останется при своём мнении. Я тоже хотел бы, чтобы всё происходило из-за причинно-следственных связей, но, увы, это не так. Законы макро-мира не работают в микро-мире. Однако, если двигаться ещё глубже, то всё, что происходит в макро-мире основывается на событиях микро-мира. Любой физический закон всегда несет в себе вероятностный характер. Даже F=ma в теории может не произойти. В теории даже все молекулы твоей комнаты могут банально сжаться в одной точке и ты просто задохнешься, но этого никогда произойдет как минимум за всё время существования нашей вселенной. Просто потому что вероятность всех этих событий стремится к нулю. Там реально вероятность где-то 10^(-26), может еще меньше, не помню. Иными словами, физические законы нашего макроскопического мира работают только потому, что все микроскопические штуки случайно происходят, но при этом происходят с бесконечно большой вероятностью, как я уже упоминал про воздух. Подробнее об этом писал, кажется, Мякишев в учебнике физики за 10 класс, стр 265, второй закон термодинамики. А вообще, касательно случайностей, я советую к просмотру небольшую вырезку из лекций Александра Чирцова, кандидата физ.мат наук про случайности в квантовой физике: kzread.info/dash/bejne/p3hoy9yudLC7gaQ.html Там всё довольно понятно. На самом-то деле я также как и вы считал, что весь наш мир детерминирован. Но просто нужно принять то, что в мире существуют абсолютно случайные события.
@testman1865
4 жыл бұрын
@@Zeding_Stuff При помощи математики возможно описать всё реальное, и не реальное. Точно так же, как при помощи слов. То, что физика упёрлась в невозможность практически детерминировать события микро-мира, и приходиться использовать инструменты вероятности, не означает, что события происходят там случайным образом. Очень тонкая уловка, в которую многие, увы, попадают.
Чувак,я нихрена не понял что ты сказал ! Но ты мне близок,ты заговорил и достучался до сердца...!
Может это и имелось в виду под выражением "Случайности не случайны" ?=))
Навёл мышку на лайк, не успел нажать, а ты сказал "сейчас мне должны лайки ставить". ))) Нажал.))
на сколько я знаю для генерации случайных чисел в ЭВМ СССР использовали шумящий p-n переход
Тебя замечательно смотреть на 1.5 скорости. Была бы дикция как у журналиста, можно было бы даже х2 Тема знакомая, даже очень, но интересно узнать про "крипто-стойкие" генераторы.
@user-lo5sh4ss6o
Жыл бұрын
уже собрали все что можно...
Я помню в своё время очень удивился, когда в универе нашёл толстенную книгу Кнута, посвящённую ГСПЧ. Не понимал тогда почему эта тема так важна.
@pihva2828
5 жыл бұрын
Dyas Dark все еще не понимаю 🤔
В микроконтроллере AVR можно наловить случайных чисел с пустого пина порта, настроенного на вход без подтяжки, его значение будет метаться. между 1 и 0 в зависимости от помехи.
@suifutors
5 жыл бұрын
Помехи тоже не случайны.
@47syorha52
4 жыл бұрын
@@suifutors Да, но они труднопредсказуемы
В интернете врут, но лайк поставил
@ahtartam
5 жыл бұрын
А я поставил лайк, а через долю секунды услышал про "лайки ставить". Улыбнуло. ))
Автор , этот алгоритм иназывается "псевдо случайным", его проблема в размерности так называемой SEED , то есть разрядностью этого счетчика , если бы разрядность была бесконечна то и алгоритм бы работал без повторов но у вы в первом вшем примере на равна Int 32 бита , в втором char 8 бит вот от туда и повторы, можно этот алгоритм серьезно улучшить , в качестве SEED (srand команда) использовать прямо независящие параметры привысокой разрядности числа например 64 бита , например секунды с запуска в степени загруки процессаора корень текущая мили секунда + счетчик... и так далее тогда эта функция будет работат , я делал рандом генератор который в приделах int64 не повторялся не в одном из int64 запусков ... но отдельные короткие последовательности иногда в 4 многда в 6 чисел в последовательности имели повтор, меня в общем то удовлетварила такая реализация (для рандомногогереатора ключей в алгоритме шифрования RSA использовал) вообще в криптографических процессорах используется аппаратный генератор белого шума для получения тогосамогоинициализирующего значения , причем как парвило не с одного канала, я както тестировал по пояс китайскую микруху ставил их 8 в ряд сливал все данны ена комп ипытался найтикак в нутри так и между каждй совпадения , в общем вылазило межмикрухами 1 в несколько миллиардов и причем не разу в одних итех же ... а естьвесьма серьёзные микросхемы ...
@YaShoom
5 жыл бұрын
+Fastereus в качестве ЗЕРНА.
@portal2x2
5 жыл бұрын
Так в видео об этом сказано. Что вообще ждать от ГПСЧ?
@Ma_X64
3 жыл бұрын
Расово верный рандом должен давать еще расово верное распределение.
Насколько помню из юности, *случайность* определяется вероятностью выпадения одинаковых комбинций в битовом потоке. Для белого шума равномерно падает в завимости от числа бит. Т.е чем болше бит в комбинации тем ниже их вероятность. По окончании цикла (разрядность) все повторятся, но другой задачи в этих функциях и не ставилось.
Для проверки случайности на случайность существует автокорреляционная функция. Мы ее использовали для обнаружения цели на фоне коррелированных и псевдослучайных помех.
Афигеть!!!! Так вот как это решается... 1. Никак раньше не мог понять программу на ассемблере кр58080вм (вектор 06ц)как в двоичной система производилось деление. 2. Незнал как сгенерировать случайные числа в заданном диапазоне, да так чтобы числа не повторялись, а перебрались полностью.... афигеть. (Пример заполнение (прорисовка) картинки пикселями в случайном порядке)
Можно на дату и время завязаться тогда в каждую новую секунду будет уникальная последовательность. Но всё же можно предсказать и её
Я школьником ещё на Spectrum'e пробовал, чтобы компьютер "сам" писал музыку. С помощью RND, задавалась высота, продолжительность звука и паузы между ними. После недолгой отладки (на бейсике всё разумеется) программа успешно работала. Но мелодией это не являлось. Иногда что-то угадывалось, не более. Но, блин, тогда это было интересно.
x(n)=1-2*x*(n-1)^2 вот быстрый алгоритм. последовательность зависит только от х(0), хЄ(-1,1) если описать его быстрее в виде группы преобразований: mul x,x mul x,-2 inc x
@LoLSURPRAISE
4 жыл бұрын
хороший быстрый рандом, быстрее чем вызов рандом функции встроенной
@user-yy7bq1zx8r
4 жыл бұрын
Может это глупый вопрос, но откуда брать х?
@nakidai
Жыл бұрын
@@user-yy7bq1zx8r 1
Потому аналог - наше всё)) в мк тяну постоянно данные с АЦП если нужна более корректная случайность)
@N0wsan
5 жыл бұрын
Слушай, а наводки от сети 50 Гц не влияют разве?
Всякий, кто питает слабость к арифметическим методам получения случайных чисел, грешен вне всяких сомнений. (Джон фон Нейман)
@47syorha52
5 жыл бұрын
Привет.
@generalpashon
4 жыл бұрын
Привет.
@AV4444
4 жыл бұрын
Привет.
@dimazahaiko1803
4 жыл бұрын
Привет.
@ponny256
4 жыл бұрын
Привет.
Михаил, здравствуйте. А если при создании своего генератора, при генерации нового числа, создать указатель *ptr на последнее случайное число например? Далее, в return генератора пишем: return ptr++; таким образом указатель укажет на следующую ячейку памяти в которой уже другое число. И так при каждом вызове генератора.
В том примере, который ты показал на 3.40, повторение последовательности связано с тем, что последняя цифра была 0, так ведь?
Здравствуйте! Что за музыка играет в ролике?
Блин какой умный мужик. Походу он бога скоро подвинет) а че, жизнь и естественный отбор он уже создал и смоделировал
В MCU делал случайные числа, основываясь либо на шуме АЦП, либо на компараторе, к которому подключен резистор примерно в мегаом и два куска провода в качестве антенны. На компараторе мне больше понравилось -- реально полная белиберда получается. Плохо только, что это всего один бит, и приходится генерацию во времени размазывать, собирая биты. Конечно, для шифрования такой рандом не подойдет.
0:13 там вместе с числами появилось слово ШОК! и еще разные появляются
@foo52ru
4 жыл бұрын
это 25 кадр. Откуда вы думаете у меня столько подписчиков?
@zmei7mei642
4 жыл бұрын
@@foo52ru вот и новая тема для следующего видео, работает ли 25 кадр.
@NewStoryline
3 жыл бұрын
и ещё на 0:16 есть и т.д.
😘
Добрый вечер подскажи пожалуйста если что то знаешь. Есть генератор случайных чисел в Гугле там может быть такое что что энное количество чисел может повторятся через несколько ходов по заводским настройкам.
может брать результат первой генерации и заменять на какую либо константу и потом снова брать результат и снова подставлять? Так можно или да?
Думал что пришёл посмотреть как работает функция рандом, а оказалось что я пришёл на математику)
@Andymit
3 жыл бұрын
так шо ты хотел?) думал, что компьютер кости бросает, чтобы случайное число получить?)
Привет, хотел спросить в c++11 появился рандом mt19937, можешь рассказать про этот алгоритм?
@foo52ru
5 жыл бұрын
Если буду для себя разбирать другие алгоритмы, то возможно сделаю видео. Данный ролик получился спонтанно, после спора. Решил проверить на практике, повторяется ли последовательность, стал копать глубже, так всё это и вылилось в ролик. Видел другие алгоритмы, но пока их не разбирал.
Научу машину, "Настоящей случайность", я так пароли себе делаю, главное в блокноте делать, чтобы знать. Закрываешь глаза 10 раз крутишься, хаотично и беспорядочно жмёшь накнопки. Можно провести опыт, что бы узнать повторяется ли результат. Надо всего лишь 2^32х10 раз покрутится.
@lidanit0191
Жыл бұрын
Как успехи?
Возможно сделать не псевдослучайные последовательности используя математику?.. т.е. с криптографической стойкостью или типа того.
Моя дипломка по этои теме. Посоветуйте что нибудь...
а если написать генетический алгоритм на OpenCL вместо случайных чисел использовать то, который поток карта взяла на выполнение первым, и вообще интересно запускать такие миры без графической оболочки, как бы это странно не звучало, на GPU
Можно ли сгенерировать случайное число?
1:40 ха, 228, ржомба бомба, прикол работает
давай следующий ролик про дискретное логорифмирование или про элептические кривые на конечных полях или про sha2 шифрование. Что нибудь на тему биткоина?
Прошу! Скиньте музыку из видео
Хмм, а возможно ли брать случайное число из белого шума (аналового)
Афигеть автор, ты гений!!! Есть в России люди с мозгами!!! Дайте им дорогу !!!
@user-lo6hg3np8s
Жыл бұрын
уже дали, на фронт.
А можно как то предугадать когда нужный предмет появится в том месте где нужно? Количество вариаций предмета известно. Количество мест тоже известно. Сами предметы сменяют свои места каждый день рандомно
Слушай а вот от 1 до 20 шаг повтора должен быть мелкий да?
Гсч кастлот говорят не получается сделать обход. И наипать людей
А как на счет настоящего рандома? Придумать как его создать.. например на основе какого нибудь аналогового датчика шумящего
тоесть нужно сбивать ему последовательность раз в N ходов ? прошло N ходов и меняем алгоритм ?
Пожалуйста, где мне найти этот минус, играющий на фоне??? Очень прошу
А если a, c, m занести случайным образом в массив от 1 до 256 и их последовательно брать? Наверное это сильно рандомизирует полученные результаты.
@foo52ru
5 жыл бұрын
Последовательность, выдаваемая алгоритмом из ролика проходит тесты на случайность, вряд ли они станут более "случайные". Но период, до начало повторения, наверно, резко возрастёт. Если есть необходимость в большом периоде, то, возможно, это имеет смысл. Я не математик, возможно ошибаюсь.
Доброго времени суток! Как с вами связаться??
очень круто! Жаль что обычному человеку, далекому от программирования ничего не понятно. А можно тоже самое, но с "примеркой" к конкретным фактам из жизни, где это можно эффективно применить, владея подобными знаниями? Ну например лотерея, игры, или еще где-то....
Рондомное повторение на повторение в безконечность, они будут повторяться постоянно система закрыта, она конечна и дублируется постоянно, есть код возможно искусственная симуляция!
Пересмотрел видео второй раз. Немного стало доходить. Но я серавно не всё понял, ибо я не работал на ассемблере!
4:43 ты показал список "Константы для линейных конгруэнтных генераторов", а где полный их список? Откуда ты взял а = 5, с = 1, m = 256? Явно же не наугад? Или есть какой-то способ их составления, чтобы они были удачными?
@foo52ru
5 жыл бұрын
В статье в википедии есть правила выбора констант, но они не гарантируют хороший результат. Константы 5, 1, 256 взял из книги про AVR. Точнее не константы, а сам код и только делая этот ролик до меня дошло, что это и есть метод, про который ролик делаю.
Пересмотри вступление. Там мелькают забавные (или не очень) слова. Да-да, среди чисел. Типа:"МИР В ШОКЕ!" и "ОТ НАС СКРЫВАЛИ..."
Никогда не понимал, почему просто не использовать для базиса генератора "шум" от аналоговых датчиков или неизбежны колебания питающего напряжения (тысячные доли вольта)? Шум всегда присутствует, он действительно случайный и гарантирует уникальность выходной последовательности... Изменено: глянул в вике про алгоритмы гпсч, там пишут, что внешние шумы используют редко потому, что: "Время и трудозатраты при установке и настройке по сравнению с программными ГПСЧ" - утверждение не выглядит обоснованным, или как минимум не раскрыто "Дороговизна" - опять таки, не понятно что тут дорогого? "Генерация случайных чисел происходит медленнее, чем при программной реализации ГПСЧ" - считать значение с аналового входа как минимум сопостовимой по сложности с выполнением нескольких математиматических операций, а в идеале может быть реализовано и дешевле "Невозможность воспроизведения ранее сгенерированной последовательности случайных чисел" - хм... Разве не в этом смысл случайных последовательностей? По приколу запилил алгоритм генерации случайных чисел на ардуинке на основе шума от аналогового входа, на который подключён операционный усилитель с уже его входом, весящим в воздухе. Работает практически так же быстро, как и "стандартный" rand(), повторяющиеся последовательности больше 20 чисел обнаружить не удалось, распределение, более или менее равномерное, с оговоркой на то, что значения все таки случайные и время от времени попадаются несколько одинаковых или очень близких чисел подряд, но вроде так и должно быть:)
А зафигачь Rule 30 в кольце с визуализацией и генерацией псевдо-случайных чисел, для которой биты берутся из произвольной колонки. Очень наглядно можно сделать: и показать влияние единственного бита инициирующей последовательности на все получаемые значения, и как влияет длина кольца на длину цикла (можно даже численный эксперимент организовать и сравнить результаты с расчетными значениями), и про одномерные клеточные автоматы просветить публику. Чем не тема для выпуска? :)
@foo52ru
5 жыл бұрын
Спасибо за наводку, почитаю на досуге.
для чисел являющихся степенями двойки деление это сдвиг что вроде известно а вот остаток от деление это наложение маски мне в одном проекте надо было максимально ускорить некоторые рассчеты // this hack works only with power-of-2 values // how we get 0x3F mask for 64 int value // 0100 0000 = 64 // set all higher bits to 1 // 1100 0000 // and invert them // 0011 1111 = 0x3F // // for example for mod16 we get next mask // 16 = 0001 0000 // set higher = 1111 0000 // invert = 0000 1111 // mask = 0x0F // so val % 16 == val & 0x0F
При поиске повторений последовательности из 15-ти сколько совпавших подряд идущих встречал? Я имею ввиду последовательность начинает повторяться, но это ещё не повторение, а совпадение. Сколько чисел совпадали до настоящего повторения?
@foo52ru
5 жыл бұрын
Первых два числа из запомненой последовательности повторялись. Это кстати, на видео видно. Вроде было, что и два раза первые два числа повторялись. Последовательности из 3 и более чисел не было.
на волю слу. аю? тогда вот самый простой генератор простых чисел. длина окружности с точностью до стальки чисел сколько сама длина окружности. если длина 123см значит точность до 123 чисел. и 33 последних числа будут всегда случайны. при длине окружности. измени длину и будет другой результат.
обалдеть более 2000 строк кода. может все таки пайтон использовать? там готовые библиотеки есть. и учить его говорят проще) ну не проще пиксель ленг но все же
Спасибо! понял одно, компьютер не генерирует случайные числа. Компьютерная рулетка не случайна, а просчитывается спинами )))
Искал рандомно, нашёл золото
ваши ролики безумны, я вас считаю маньяком, информационным маньяком, решил написать это тут, сложно держать в себе
@uebyCyka
4 жыл бұрын
Этот комментарий - проявление эмоциональной слабости
О лайках не соврали!
Как мне казалось, алгоритмы вычисления рандома всегда засекречивают...
@foo52ru
5 жыл бұрын
Если все алгоритмы популярных систем шифрования в открытом доступе, открытость рандома не удивляет.
я жду искуственую жызнь
Врут, но лайк!
В PHP интересно, как генерируется
@undefinedundefined5924
5 жыл бұрын
Вот так: github.com/php/php-src/blob/623911f993f39ebbe75abe2771fc89faf6b15b9b/ext/standard/random.c github.com/php/php-src/blob/master/win32/winutil.c *например для win
эволюционная часть днк, разделенная квантованием, не смотря на непреодолимый пространственный рубеж, все еще зарезервирована для манипуляций
4:15 "два раза здвиг, что равноценно умножению на 4" это ты про двоичную систему?
@foo52ru
5 жыл бұрын
операция сдвига в ассемблере, это все биты в регистре сдвигаются, в данном случае влево, а крайний правый бит становиться равным 0. Это как умножение на два. В десятичной системе это выглядит бы так: было 0056, стало 0560. То есть умножение на десять. В младших микроконтроллерах нет инструкции умножения, поэтому применяются подобные конструкции. Ну и пример переполнения. Есть 4-разрядная ячейка памяти (десятичная). В ней записано 1234. Делаем сдвиг влево, получилось 2340. Первая единичка выпала. Получилось (1234*10) mod 1^4