Jump to content
    

Генератор случайных чисел на STM32

2 часа назад, tgruzd сказал:

хранить результат предыдущих 10^8 генераций, искать в них совпадение и перегенерировать если нашли. очевидно же)

Физически реализовать такое сравнение проще, чем кажется:

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

Это если скорость важна. Если не важна, то гемор с запоминанием тоже применим.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Обратил внимание, что именно с 3-ей страницы обычно к теме подключаются участники, которым некогда читать первые две самые важные страницы.

Создание самого ГСЧ здесь задача второстепенная и давно уже имеющая много различных решений.

Топикстартеру нужен ГСЧ типа Спортлото, но с многими миллионами шариков. И это тоже сейчас не такая уж и проблема.

Share this post


Link to post
Share on other sites

12 часов назад, firstvald сказал:

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

Произвольная точка не пойдет. Полином должен быть неприводимым примитивным. Например x^128+x^7+x^2+x+1. Тогда будет последовательность максимальной длины с периодом 2^128-1. Отсутствие повторений гарантируется.

Share this post


Link to post
Share on other sites

On 5/8/2024 at 6:54 PM, blackfin said:

А где хранить серийный номер размером 2,5 килобайт? Стикер клеить на корпус? 😉

У современных дешёвых микроконтроллеров объём ПЗУ начинается от 64 кБ

Share this post


Link to post
Share on other sites

11 hours ago, A.V.Avtomat said:

Обратил внимание, что именно с 3-ей страницы обычно к теме подключаются участники, которым некогда читать первые две самые важные страницы.

Создание самого ГСЧ здесь задача второстепенная и давно уже имеющая много различных решений.

Топикстартеру нужен ГСЧ типа Спортлото, но с многими миллионами шариков. И это тоже сейчас не такая уж и проблема.

обычно к 3 странице все начавшие выдыхаются так и не упомянув очевидное решение. и да,  в ряде случаев нужно не лучшее а хотябы какое решение ,  на поиск лучшего нету времени. обычно первое работающее остается в проекте навсегда.

Share this post


Link to post
Share on other sites

16 минут назад, firstvald сказал:

обычно к 3 странице все начавшие выдыхаются так и не упомянув очевидное решение. и да,  в ряде случаев нужно не лучшее а хотябы какое решение ,  на поиск лучшего нету времени. обычно первое работающее остается в проекте навсегда.

Штука в том, что тут сразу не очевидно, как решение будет реализовано. Вы думаете, что это ПЛИС или МК, а топикстартер скорее всего ПЭВМ имеет в виду. Или наоборот, но менее вероятно.

Share this post


Link to post
Share on other sites

2 hours ago, niXto said:

У современных дешёвых микроконтроллеров объём ПЗУ начинается от 64 кБ

У моего 256к объем Флэш памяти. (

1 hour ago, firstvald said:

обычно к 3 странице все начавшие выдыхаются так и не упомянув очевидное решение. и да,  в ряде случаев нужно не лучшее а хотябы какое решение ,  на поиск лучшего нету времени. обычно первое работающее остается в проекте навсегда.

Ну пока решения нет, вот прям четкого и понятного с гарантированным неповторением в генерируемой последовательности. К сожалению. 

Share this post


Link to post
Share on other sites

On 5/10/2024 at 5:06 PM, mplata said:

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

Вы бы объяснили для чего вам нужны эти случайные числа..

От этого часто зависит решение задачи.

Возможно, вы ищите там где фонарный столб, а не там, где потеряли..

Share this post


Link to post
Share on other sites

9 minutes ago, blackfin said:

Вы бы объяснили для чего вам нужны эти случайные числа..

От этого часто зависит решение задачи.

Возможно, вы ищите там где фонарный столб, а не там, где потеряли..

По rfid прошивать уникальный код доступа электронного ключа скуд. Программаторы имеют уникальные серийные номера. 

Повторение приведет к тому что тот кто не должен тот получает доступ туда куда нельзя. 

Это если грубо. 

Share this post


Link to post
Share on other sites

On 5/10/2024 at 5:19 PM, mplata said:

По rfid прошивать уникальный код доступа электронного ключа скуд. Программаторы имеют уникальные серийные номера. 

Повторение приведет к тому что тот кто не должен тот получает доступ туда куда нельзя. 

Так для этого используют хеш-функции, например: SHA-3.

Share this post


Link to post
Share on other sites

2 minutes ago, blackfin said:

Так для этого используют хэш-функции, например: SHA-3.

Хэш это отлично, но там 256 разрядов минимум. А мне нужно максимум 128. 

Share this post


Link to post
Share on other sites

On 5/10/2024 at 5:31 PM, mplata said:

Хэш это отлично, но там 256 разрядов минимум. А мне нужно максимум 128. 

Ну так, посчитали 256 бит, сделали "xor" старших 128 бит с младшими 128 битами и получили нужный код.

Share this post


Link to post
Share on other sites

Just now, blackfin said:

Ну так, посчитали 256 бит, сделали "xor" старших 128 бит с младшими 128 битами и получили нужный код.

А если после ксора будут одинаковые ключи? 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...