random. Генерация псевдослучайных чисел на компьютере
Вставка
- Опубліковано 22 вер 2018
- Описывается линейный конгруэнтный метод генерации псевдослучайных чисел. Это один из самых популярных методов, используемых в компьютерах.
Моя группа ВКонтакте electronics_nn
Выражаю благодарность тем, кто поддерживает меня финансами.
Реквизиты для финансовой поддержки можно найти в
/ foo52ru - Наука та технологія
Я до сих пор жду продолжение искусственной жизни.
Я частично написал код второго мира, реализована только часть задуманных команд, но уже можно запускать и смотреть на бегающих ботов. Но это отбирает слишком много времени, пока забросил. Виноват. Всё собираюсь дописать, но другие идеи покоя не дают. Обещаю исправиться.
Богдан, ты ни один) Хотя я уже начал забывать об этом)
спасибо што читаеш и отвичаеш жду делай на славу
@@foo52ru, спасибо, что делишься с нами такой увлекательной информацией.
@@foo52ru а тема с клеточными автоматами по типу life не привлекает?
Классный урок, очень доступное объяснение, понятно что криптография - это очень емкая тема, но нужно уметь говорить просто о сложно что и делает автор! Спасибо
08:17 "Если в интернете не врут, то сейчас мне должны лайки ставить"
Орнул в голос и поставил лайк
Я поставил лайк и сразу же у слищел об этом.
А я ещё вначале ролика заметил среди мелькающих цифр слово "ШОК!". Даже ткнул паузу, и нашёл этот кадр, чтобы убедиться, что не показалось. Поэтому в конце ролика совсем не удивился, когда среди мелькающих цифр увидел повторяющиеся "LIKE", "LIKE", "LIKE" :)
У вас очень интересные ролики, пожалуйста снимайте их почаще! Лайк, подписка само собой.
Спасибо вам за видео, всегда очень интересно и все понятно объясняете!
Все круто, у вас очень годный ламповый контент👍
Спасибо за старания, весьма интересно!
Просто и понятно, как и сам алгоритм. Жаль тема не была продолжена для ГСЧ и выше.
очень рады видеть. Как же я жду продолжение искусственной жизни....
Большое спасибо за ваши видео
Мегакрутой канал, респект автору!
Делаешь уникальный контент, продолжай!
Ну а я точно знаю, что может генерировать поток лайков и подписку на канал - твой годный контент. Спасибо большое, очень интересно.:)
Последние видосы топ, удачи)))))
Спасибо за подробные разъяснения! Теперь имею представление, что не всё, что называется рандомом в программировании, рандомно
Спасибо за видео очень интересно и полезно
Огромное спасибо, очень полезно.
Качественно и интересно супер спасибо класс
Это было мозгосшибательно но суть уловил струдом ) Спасибо) хотелось бы продолжение с подводной лодкой, даёшь 20 тыс. лье под водой)
объяснил всё как бог
Отличное качество видео супер класс
Спасибо, интересно...
очень круто!
Чувак,я нихрена не понял что ты сказал ! Но ты мне близок,ты заговорил и достучался до сердца...!
6:15 как все просто оказывается. вот спасибо два слова и я прозрел, как после прочтения энциклопедии)
Автор , этот алгоритм иназывается "псевдо случайным", его проблема в размерности так называемой SEED , то есть разрядностью этого счетчика , если бы разрядность была бесконечна то и алгоритм бы работал без повторов но у вы в первом вшем примере на равна Int 32 бита , в втором char 8 бит вот от туда и повторы, можно этот алгоритм серьезно улучшить , в качестве SEED (srand команда) использовать прямо независящие параметры привысокой разрядности числа например 64 бита , например секунды с запуска в степени загруки процессаора корень текущая мили секунда + счетчик... и так далее тогда эта функция будет работат , я делал рандом генератор который в приделах int64 не повторялся не в одном из int64 запусков ... но отдельные короткие последовательности иногда в 4 многда в 6 чисел в последовательности имели повтор, меня в общем то удовлетварила такая реализация (для рандомногогереатора ключей в алгоритме шифрования RSA использовал)
вообще в криптографических процессорах используется аппаратный генератор белого шума для получения тогосамогоинициализирующего значения , причем как парвило не с одного канала, я както тестировал по пояс китайскую микруху ставил их 8 в ряд сливал все данны ена комп ипытался найтикак в нутри так и между каждй совпадения , в общем вылазило межмикрухами 1 в несколько миллиардов и причем не разу в одних итех же ... а естьвесьма серьёзные микросхемы ...
+Fastereus в качестве ЗЕРНА.
Так в видео об этом сказано. Что вообще ждать от ГПСЧ?
Расово верный рандом должен давать еще расово верное распределение.
Годно
божественно
Очень интересно и поняио
на сколько я знаю для генерации случайных чисел в ЭВМ СССР использовали шумящий p-n переход
Может это и имелось в виду под выражением "Случайности не случайны" ?=))
Интересное видео😀. Сделай пожалуйста визуализацию гспч
спасибо! и отдельное спасибо тому маньяку.
Как говорила одна черепаха: "Случайности не случаны!"...
Альберт Тлюкабиров этой черепахой был Альберт
Энштейн
@@unex6859 кстати да, Энштейн рили был детерминистом и срался в переписке с Бором и Планком по поводу абсолютных случайностей в квантовой физике. Как выяснилось, Энтшейн был не прав и, например, период полураспада ядер урана абсолютно ни от чего не зависит. Он просто происходит сам по себе. Абсолютная случайность.
И правильно срался :)
Случайность - это событие без причины. То, что мы не в состоянии детерминировать квантовый мирок, не означает, что там всё происходит беспричинно.
@@testman1865 ну, круто. Энивей каждый останется при своём мнении. Я тоже хотел бы, чтобы всё происходило из-за причинно-следственных связей, но, увы, это не так. Законы макро-мира не работают в микро-мире. Однако, если двигаться ещё глубже, то всё, что происходит в макро-мире основывается на событиях микро-мира. Любой физический закон всегда несет в себе вероятностный характер. Даже F=ma в теории может не произойти. В теории даже все молекулы твоей комнаты могут банально сжаться в одной точке и ты просто задохнешься, но этого никогда произойдет как минимум за всё время существования нашей вселенной. Просто потому что вероятность всех этих событий стремится к нулю. Там реально вероятность где-то 10^(-26), может еще меньше, не помню.
Иными словами, физические законы нашего макроскопического мира работают только потому, что все микроскопические штуки случайно происходят, но при этом происходят с бесконечно большой вероятностью, как я уже упоминал про воздух.
Подробнее об этом писал, кажется, Мякишев в учебнике физики за 10 класс, стр 265, второй закон термодинамики.
А вообще, касательно случайностей, я советую к просмотру небольшую вырезку из лекций Александра Чирцова, кандидата физ.мат наук про случайности в квантовой физике:
ua-cam.com/video/uD4izuDMUQA/v-deo.html
Там всё довольно понятно.
На самом-то деле я также как и вы считал, что весь наш мир детерминирован. Но просто нужно принять то, что в мире существуют абсолютно случайные события.
@@Zeding_Stuff При помощи математики возможно описать всё реальное, и не реальное. Точно так же, как при помощи слов. То, что физика упёрлась в невозможность практически детерминировать события микро-мира, и приходиться использовать инструменты вероятности, не означает, что события происходят там случайным образом. Очень тонкая уловка, в которую многие, увы, попадают.
Я помню в своё время очень удивился, когда в универе нашёл толстенную книгу Кнута, посвящённую ГСПЧ. Не понимал тогда почему эта тема так важна.
Dyas Dark все еще не понимаю 🤔
Насколько помню из юности, *случайность* определяется вероятностью выпадения одинаковых комбинций в битовом потоке. Для белого шума равномерно падает в завимости от числа бит. Т.е чем болше бит в комбинации тем ниже их вероятность. По окончании цикла (разрядность) все повторятся, но другой задачи в этих функциях и не ставилось.
Михаил, здравствуйте. А если при создании своего генератора, при генерации нового числа, создать указатель *ptr на последнее случайное число например? Далее, в return генератора пишем: return ptr++; таким образом указатель укажет на следующую ячейку памяти в которой уже другое число. И так при каждом вызове генератора.
В том примере, который ты показал на 3.40, повторение последовательности связано с тем, что последняя цифра была 0, так ведь?
Вы гениус
В интернете не врут! Как раз в этот момент лайк ставил))
В микроконтроллере AVR можно наловить случайных чисел с пустого пина порта, настроенного на вход без подтяжки, его значение будет метаться. между 1 и 0 в зависимости от помехи.
Помехи тоже не случайны.
@@suifutors Да, но они труднопредсказуемы
Я школьником ещё на Spectrum'e пробовал, чтобы компьютер "сам" писал музыку. С помощью RND, задавалась высота, продолжительность звука и паузы между ними. После недолгой отладки (на бейсике всё разумеется) программа успешно работала. Но мелодией это не являлось. Иногда что-то угадывалось, не более.
Но, блин, тогда это было интересно.
Тебя замечательно смотреть на 1.5 скорости. Была бы дикция как у журналиста, можно было бы даже х2
Тема знакомая, даже очень, но интересно узнать про "крипто-стойкие" генераторы.
уже собрали все что можно...
Для проверки случайности на случайность существует автокорреляционная функция. Мы ее использовали для обнаружения цели на фоне коррелированных и псевдослучайных помех.
x(n)=1-2*x*(n-1)^2 вот быстрый алгоритм. последовательность зависит только от х(0), хЄ(-1,1)
если описать его быстрее в виде группы преобразований:
mul x,x
mul x,-2
inc x
хороший быстрый рандом, быстрее чем вызов рандом функции встроенной
Может это глупый вопрос, но откуда брать х?
@@user-yy7bq1zx8r 1
Афигеть!!!! Так вот как это решается...
1. Никак раньше не мог понять программу на ассемблере кр58080вм (вектор 06ц)как в двоичной система производилось деление.
2. Незнал как сгенерировать случайные числа в заданном диапазоне, да так чтобы числа не повторялись, а перебрались полностью.... афигеть. (Пример заполнение (прорисовка) картинки пикселями в случайном порядке)
Класс
Здравствуйте! Что за музыка играет в ролике?
Добрый вечер подскажи пожалуйста если что то знаешь. Есть генератор случайных чисел в Гугле там может быть такое что что энное количество чисел может повторятся через несколько ходов по заводским настройкам.
Потому аналог - наше всё)) в мк тяну постоянно данные с АЦП если нужна более корректная случайность)
Слушай, а наводки от сети 50 Гц не влияют разве?
Всякий, кто питает слабость к арифметическим методам получения случайных чисел, грешен вне всяких сомнений. (Джон фон Нейман)
Привет.
Привет.
Привет.
Привет.
Привет.
может брать результат первой генерации и заменять на какую либо константу и потом снова брать результат и снова подставлять? Так можно или да?
Навёл мышку на лайк, не успел нажать, а ты сказал "сейчас мне должны лайки ставить". ))) Нажал.))
Возможно сделать не псевдослучайные последовательности используя математику?.. т.е. с криптографической стойкостью или типа того.
Можно на дату и время завязаться тогда в каждую новую секунду будет уникальная последовательность. Но всё же можно предсказать и её
В MCU делал случайные числа, основываясь либо на шуме АЦП, либо на компараторе, к которому подключен резистор примерно в мегаом и два куска провода в качестве антенны. На компараторе мне больше понравилось -- реально полная белиберда получается. Плохо только, что это всего один бит, и приходится генерацию во времени размазывать, собирая биты. Конечно, для шифрования такой рандом не подойдет.
В интернете врут, но лайк поставил
А я поставил лайк, а через долю секунды услышал про "лайки ставить". Улыбнуло. ))
0:13 там вместе с числами появилось слово ШОК! и еще разные появляются
это 25 кадр. Откуда вы думаете у меня столько подписчиков?
@@foo52ru вот и новая тема для следующего видео, работает ли 25 кадр.
и ещё на 0:16 есть и т.д.
Слушай а вот от 1 до 20 шаг повтора должен быть мелкий да?
Научу машину, "Настоящей случайность", я так пароли себе делаю, главное в блокноте делать, чтобы знать. Закрываешь глаза 10 раз крутишься, хаотично и беспорядочно жмёшь накнопки.
Можно провести опыт, что бы узнать повторяется ли результат. Надо всего лишь 2^32х10 раз покрутится.
Как успехи?
Привет, хотел спросить в c++11 появился рандом mt19937, можешь рассказать про этот алгоритм?
Если буду для себя разбирать другие алгоритмы, то возможно сделаю видео. Данный ролик получился спонтанно, после спора. Решил проверить на практике, повторяется ли последовательность, стал копать глубже, так всё это и вылилось в ролик. Видел другие алгоритмы, но пока их не разбирал.
Блин какой умный мужик. Походу он бога скоро подвинет) а че, жизнь и естественный отбор он уже создал и смоделировал
Пожалуйста, где мне найти этот минус, играющий на фоне??? Очень прошу
Думал что пришёл посмотреть как работает функция рандом, а оказалось что я пришёл на математику)
так шо ты хотел?) думал, что компьютер кости бросает, чтобы случайное число получить?)
Доброго времени суток! Как с вами связаться??
При поиске повторений последовательности из 15-ти сколько совпавших подряд идущих встречал? Я имею ввиду последовательность начинает повторяться, но это ещё не повторение, а совпадение. Сколько чисел совпадали до настоящего повторения?
Первых два числа из запомненой последовательности повторялись. Это кстати, на видео видно. Вроде было, что и два раза первые два числа повторялись. Последовательности из 3 и более чисел не было.
а если написать генетический алгоритм на OpenCL вместо случайных чисел использовать то, который поток карта взяла на выполнение первым, и вообще интересно запускать такие миры без графической оболочки, как бы это странно не звучало, на GPU
Моя дипломка по этои теме. Посоветуйте что нибудь...
Хмм, а возможно ли брать случайное число из белого шума (аналового)
Можно ли сгенерировать случайное число?
Пересмотри вступление. Там мелькают забавные (или не очень) слова. Да-да, среди чисел. Типа:"МИР В ШОКЕ!" и "ОТ НАС СКРЫВАЛИ..."
Спасибо! понял одно, компьютер не генерирует случайные числа. Компьютерная рулетка не случайна, а просчитывается спинами )))
А если a, c, m занести случайным образом в массив от 1 до 256 и их последовательно брать? Наверное это сильно рандомизирует полученные результаты.
Последовательность, выдаваемая алгоритмом из ролика проходит тесты на случайность, вряд ли они станут более "случайные". Но период, до начало повторения, наверно, резко возрастёт. Если есть необходимость в большом периоде, то, возможно, это имеет смысл. Я не математик, возможно ошибаюсь.
очень круто! Жаль что обычному человеку, далекому от программирования ничего не понятно. А можно тоже самое, но с "примеркой" к конкретным фактам из жизни, где это можно эффективно применить, владея подобными знаниями? Ну например лотерея, игры, или еще где-то....
4:43 ты показал список "Константы для линейных конгруэнтных генераторов", а где полный их список? Откуда ты взял а = 5, с = 1, m = 256? Явно же не наугад? Или есть какой-то способ их составления, чтобы они были удачными?
В статье в википедии есть правила выбора констант, но они не гарантируют хороший результат. Константы 5, 1, 256 взял из книги про AVR. Точнее не константы, а сам код и только делая этот ролик до меня дошло, что это и есть метод, про который ролик делаю.
тоесть нужно сбивать ему последовательность раз в N ходов ? прошло N ходов и меняем алгоритм ?
давай следующий ролик про дискретное логорифмирование или про элептические кривые на конечных полях или про sha2 шифрование. Что нибудь на тему биткоина?
А можно как то предугадать когда нужный предмет появится в том месте где нужно? Количество вариаций предмета известно. Количество мест тоже известно. Сами предметы сменяют свои места каждый день рандомно
Афигеть автор, ты гений!!!
Есть в России люди с мозгами!!! Дайте им дорогу !!!
уже дали, на фронт.
А зафигачь Rule 30 в кольце с визуализацией и генерацией псевдо-случайных чисел, для которой биты берутся из произвольной колонки. Очень наглядно можно сделать: и показать влияние единственного бита инициирующей последовательности на все получаемые значения, и как влияет длина кольца на длину цикла (можно даже численный эксперимент организовать и сравнить результаты с расчетными значениями), и про одномерные клеточные автоматы просветить публику. Чем не тема для выпуска? :)
Спасибо за наводку, почитаю на досуге.
Прошу! Скиньте музыку из видео
А как на счет настоящего рандома? Придумать как его создать.. например на основе какого нибудь аналогового датчика шумящего
Здравствуйте, я думаю, что вы не против, если я разместил ссылку на это видео в поучительных целях?
Я только за.
обалдеть более 2000 строк кода. может все таки пайтон использовать? там готовые библиотеки есть. и учить его говорят проще) ну не проще пиксель ленг но все же
Пересмотрел видео второй раз. Немного стало доходить. Но я серавно не всё понял, ибо я не работал на ассемблере!
ваши ролики безумны, я вас считаю маньяком, информационным маньяком, решил написать это тут, сложно держать в себе
Этот комментарий - проявление эмоциональной слабости
Так какой конкретно параметр микросхема считает случайным числом? Напряжение где-то в какой-то момент?
Какая микросхема?
@@foo52ru процессор, допустим. У меня где-то валяется калькулятор Casio и там есть генератор случайного числа. Вот где он берет это число?
@@user-rq7uw9qb5u, скорее всего, там либо часы тикают, либо он дополнительно отталкивается от предыдущего вычисления. Во втором случае полнейший рандом получается
@@albertdantist4516 Но это не точно?)
я жду искуственую жызнь
Гсч кастлот говорят не получается сделать обход. И наипать людей
😘
Рондомное повторение на повторение в безконечность, они будут повторяться постоянно система закрыта, она конечна и дублируется постоянно, есть код возможно искусственная симуляция!
для чисел являющихся степенями двойки деление это сдвиг что вроде известно
а вот остаток от деление это наложение маски
мне в одном проекте надо было максимально ускорить некоторые рассчеты
// 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
используйте алгоритм Вихрь Мерсенна, это самый продвинутый генератор на данный момент
Один знакомый утверждал, что последовательность, генерируемая компом никогда не повторяется. Я проверил, что это не так, с помощью небольшого скрипта. Ну а дальше, просто из любопытства, разобрался, как работает генератор случайных чисел.
Пока мне его хватает:)
на волю слу. аю? тогда вот самый простой генератор простых чисел. длина окружности с точностью до стальки чисел сколько сама длина окружности. если длина 123см значит точность до 123 чисел. и 33 последних числа будут всегда случайны. при длине окружности. измени длину и будет другой результат.
Никогда не понимал, почему просто не использовать для базиса генератора "шум" от аналоговых датчиков или неизбежны колебания питающего напряжения (тысячные доли вольта)? Шум всегда присутствует, он действительно случайный и гарантирует уникальность выходной последовательности...
Изменено: глянул в вике про алгоритмы гпсч, там пишут, что внешние шумы используют редко потому, что:
"Время и трудозатраты при установке и настройке по сравнению с программными ГПСЧ" - утверждение не выглядит обоснованным, или как минимум не раскрыто
"Дороговизна" - опять таки, не понятно что тут дорогого?
"Генерация случайных чисел происходит медленнее, чем при программной реализации ГПСЧ" - считать значение с аналового входа как минимум сопостовимой по сложности с выполнением нескольких математиматических операций, а в идеале может быть реализовано и дешевле
"Невозможность воспроизведения ранее сгенерированной последовательности случайных чисел" - хм... Разве не в этом смысл случайных последовательностей?
По приколу запилил алгоритм генерации случайных чисел на ардуинке на основе шума от аналогового входа, на который подключён операционный усилитель с уже его входом, весящим в воздухе. Работает практически так же быстро, как и "стандартный" rand(), повторяющиеся последовательности больше 20 чисел обнаружить не удалось, распределение, более или менее равномерное, с оговоркой на то, что значения все таки случайные и время от времени попадаются несколько одинаковых или очень близких чисел подряд, но вроде так и должно быть:)
А если включить в состав процессора мини-антенну и снимать с неё данные, то это будет та неприемлимая "воля случая", о которой говорилось в цитате?
п. с. Подозреваю, что у такого способа будут любимчики, то есть диапазон случайных чисел там будет с разной плотностью вероятности.
подведешь к этой антенне какую-нибудь рацию, и уже не очень случайные числа пойдут
А таким образом значит можно и карты сделать?
В майнкрафте смотрите так и делается, бесконечный автогенерируемый мир.
1:40 ха, 228, ржомба бомба, прикол работает
Интересно существует или можно создать такое устройство которое будет выдавать настоящие случайные числа, без всяких начальных настроек, зависимости от времени, температуры и др. параметров окружающей среды. Вообщем замкнутый черный ящик, который каждую секунду выдает настоящее случайное число.
Почитай про сайт random.org. Пожалуй, только природа даёт лучшие источники "случайных" чисел
@@lykuanovIlya Классный сайт, спасибо за инфу. Получается не существует замкнутой системы генератора настоящих случайных чисел. (квантовое состояние, радиоактивный распад, считается близкими системами, но только из за сложности просчета взаимодействий всех молекул системы)
@@eng283 Странно, вы так говорите, будто в природе существует случайность)
@@minatych1435 Так я и пишу, что нет ничего случайного. Даже алгоритма нет. Только генераторы псевдо случайных чисел. Все можно просчитать, вопрос только в вычислительной мощности.
@@eng283 полностью с вами согласен, все в нашем мире не случайно и имеет определенную последовательность
В PHP интересно, как генерируется
Вот так:
github.com/php/php-src/blob/623911f993f39ebbe75abe2771fc89faf6b15b9b/ext/standard/random.c
github.com/php/php-src/blob/master/win32/winutil.c
*например для win