Jump to content
    

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

Добрый день.
Есть необходимость генерации последовательности случайных чисел в диапазоне 2^128.
Ключевое требование нет повторений, и нет элементарных чисел типа 00000....001 и т.п.
Есть ресурсы где можно почитать про это? 

Share this post


Link to post
Share on other sites

Д.Э.Кнут "Искусство программирования", том 2

Share this post


Link to post
Share on other sites

32 минуты назад, mplata сказал:

Есть ресурсы где можно почитать про это? 

User manual на ваш STM32. Раздел "Генератор случайных".

Share this post


Link to post
Share on other sites

1 минуту назад, jcxz сказал:

User manual на ваш STM32. Раздел "Генератор случайных".

Не у всех STM32 он есть аппаратный. Пока ТС не уточнит, какие именно STM32 он рассматривает, то что-то определённое предложить сложно.

Share this post


Link to post
Share on other sites

Все не так просто. К сожалению мне нужна последовательность случайных чисел без повторов. А не просто генератор. 

В данном стм нет аппаратного генератора. 

Share this post


Link to post
Share on other sites

Только что, mplata сказал:

В данном стм нет аппаратного генератора. 

Тогда изучать работу АЦП в своём МК и строить генератор на нём.

Share this post


Link to post
Share on other sites

2 minutes ago, jcxz said:

Тогда изучать работу АЦП в своём МК и строить генератор на нём.

Базовое число начала последовательности будет опираться на серийный номер изделия который уникален. 

Share this post


Link to post
Share on other sites

14 минут назад, mplata сказал:

Базовое число начала последовательности будет опираться на серийный номер изделия который уникален. 

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

Share this post


Link to post
Share on other sites

10 минут назад, makc сказал:

Натравите на него + время хорошую хэш-функцию и получите искомое.

Это будет псевдослучайная последовательность Автору же вроде нужна случайная.

Ни на каком хеше или алгоритме генератор случайных не построить. Только на аппаратном источнике шума.

Share this post


Link to post
Share on other sites

6 минут назад, jcxz сказал:

Это будет псевдослучайная последовательность Автору же вроде нужна случайная.

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

29 минут назад, jcxz сказал:

Тогда изучать работу АЦП в своём МК и строить генератор на нём.

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

Share this post


Link to post
Share on other sites

по моему без повторов делается перемешиванием, называется "random permutation"

Share this post


Link to post
Share on other sites

10 минут назад, makc сказал:

Ваш вариант, кстати, тоже псевдослучаен

У моего варианта вряд-ли возможно гарантированное повторение последовательности с некоторым периодом. Что характерно для любого генератора ПСЧ. Только если уж руки совсем кривые, что не смогли построить адекватную схему генератора шума на входе АЦП. Т.е. - с моим вариантом нужно ещё "постараться", чтобы он стал псевдослучаен.  :wink:

А вот различные математические алгоритмы - гарантированно псевдослучайны. Хотя период их может быть достаточно большим.

Share this post


Link to post
Share on other sites

47 минут назад, mplata сказал:

Все не так просто. К сожалению мне нужна последовательность случайных чисел без повторов. А не просто генератор. 

Ваш, @jcxz, вариант на АЦП, к сожалению, не отвечает этому требованию. Вообще у ТС задача очень похожа на задачу получения GUID/UUID и по-моему поэтому не стоит мудрить.

6 минут назад, jcxz сказал:

У моего варианта вряд-ли возможно гарантированное повторение последовательности с некоторым периодом. Что характерно для любого генератора ПСЧ.

Это пока, к сожалению, только умозрительная оценка. Я, например, наблюдал на выходе аппаратного генератора случайных чисел МК от Миландра К1986ВК025 далеко не случайные последовательности типа 0xDEADBEEF и т.п. Сильно удивлялись вместе с коллегами и смеялись, а потом оказалось, что количество энтропии там мало, поэтому получались всякие смешные комбинации. Если энтропию копить и правильно обрабатывать (размешивать и т.п.), то результат получается сильно лучше. В предлагаемом вами варианте нет никаких гарантий отсутствия повторений, т.к. если основным источником шума в АЦП будет помеха от работы какого-либо узла платы или от самого МК, то увы, повторения будут, вопрос размера выборки.

6 минут назад, jcxz сказал:

А вот различные математические алгоритмы - гарантированно псевдослучайны. Хотя период может быть достаточно большим.

Да, и именно это обеспечивает гарантию отсутствия повторений за заданное время.

Share this post


Link to post
Share on other sites

1 час назад, mplata сказал:

Все не так просто. К сожалению мне нужна последовательность случайных чисел без повторов. А не просто генератор. 

Для 2^128 вероятность повтора примерно равномерно распределенного случайного события в обозримой истории ничтожно мала. По сути там работает закон больших чисел.

Share this post


Link to post
Share on other sites

Just now, artemkad said:

Для 2^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...