PDA

Просмотр полной версии : Генерация случайного числа.



Gans
14.01.2023, 13:41
Здравствуйте.
Надо генерить случайное число предположим от 0 до 16 из разных копий одного и того же макроса и получать разный результат в одном и том же цикле программы.
Какие есть варианты?
P. S. Искал на форуме в разделе "Программируемые реле" генерацию случайного числа и не нашел.

capzap
14.01.2023, 13:57
здесь можно взять https://owen.ru/forum/showthread.php?t=25068&p=387783&viewfull=1#post387783

Gans
14.01.2023, 14:29
Здравствуйте, МНОГОУВАЖАЕМЫЙ ЦАПЗАП.

здесь можно взять https://owen.ru/forum/showthread.php?t=25068&p=387783&viewfull=1#post387783
Огромное спасибо за помощь. В вашей реализации генерация чисел происходит в одинаковой последовательности (6,92, 3,49, 2,4 и тд.). Это мне не подходит, но если сгенерированое число в одном макросе будет являться входом для генерации в другом макросе, то числа внутри макросов будут генерироваться разные)
После выходных вернусь к этому вопросу, а пока подожду вдруг кто-то, еще ответит.

kondor3000
14.01.2023, 15:02
Здравствуйте, МНОГОУВАЖАЕМЫЙ ЦАПЗАП.

Огромное спасибо за помощь. В вашей реализации генерация чисел происходит в одинаковой последовательности (6,92, 3,49, 2,4 и тд.). Это мне не подходит, но если сгенерированое число в одном макросе будет являться входом для генерации в другом макросе, то числа внутри макросов будут генерироваться разные)
После выходных вернусь к этому вопросу, а пока подожду вдруг кто-то, еще ответит.

Немного изменил программу capzap и получил генератор от 0 до 16 раз в секунду 65165

IVM
14.01.2023, 15:10
А не проще ли сделать ГСЧ в макосе на ST ?

Gans
14.01.2023, 15:26
Здравствуйте, Кондор3000.

Немного изменил программу capzap и получил генератор от 0 до 16 раз в секунду 65165
Мне необходимо при пуске программы сгенирить уникальные числа внутри разных копий одного и того же макроса.

Gans
14.01.2023, 15:28
Здравствуте, ИВМ.

А не проще ли сделать ГСЧ в макосе на ST ?
На сколько я понял функцию на ST пока в макросе использовать не возможно.

Василий Кашуба
14.01.2023, 16:14
Здравствуте, ИВМ.

На сколько я понял функцию на ST пока в макросе использовать не возможно.
Вот такой вариант нашёл, посмотри.

Gans
14.01.2023, 16:18
Здравствуйте, Василий.

Вот такой вариант нашёл, посмотри.
Огромное спасибо как раз то что надо!!!

petera
14.01.2023, 21:10
Я тоже оказывается делал ГСЧ https://owen.ru/forum/showthread.php?t=12691&p=323528&viewfull=1#post323528

capzap
15.01.2023, 09:28
Здравствуйте, МНОГОУВАЖАЕМЫЙ ЦАПЗАП.

Огромное спасибо за помощь. В вашей реализации генерация чисел происходит в одинаковой последовательности (6,92, 3,49, 2,4 и тд.). Это мне не подходит, но если сгенерированое число в одном макросе будет являться входом для генерации в другом макросе, то числа внутри макросов будут генерироваться разные)
После выходных вернусь к этому вопросу, а пока подожду вдруг кто-то, еще ответит.

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

Gans
14.03.2023, 10:37
Спасибо, Всем.
Вопрос решился. На вход генератора случайных чисел добавил время + числовые значения настроек оборудования.

krollcbas
14.03.2023, 19:05
Спасибо, Всем.
Вопрос решился. На вход генератора случайных чисел добавил время + числовые значения настроек оборудования.
Вы не поделитесь Вашей версией?

melky
15.03.2023, 09:19
krollcbas если я правильно понял, то это макрос от capzap во 2-м посте темы.

krollcbas
15.03.2023, 10:06
В моем проекте подобный макрос и работает, но это псевдо рандомная функция, так как системность заметна
Как человек дополнил системным временем и файлом настроек, хотелось подсмотреть

melky
15.03.2023, 10:48
314159265 - так понимаю в макросе xorshift32 вместо этого числа на SEL сделать вход и подавать время. смотрел бегло, так что если ошибся, извините.
Может у меня чего с ПО, но я после запуска не смог остановить xorshift.

Gans
23.03.2023, 08:31
Здравствуйте. Вячеслав.

В моем проекте подобный макрос и работает, но это псевдо рандомная функция, так как системность заметна
Как человек дополнил системным временем и файлом настроек, хотелось подсмотреть
Подправил функцию многоуважаемого ЦапЗап-а (см. во вложении "Pos1.png"). На вход подал сумму/произведение настоечных параметров + секунды минуты и часы подмешал (см. во вложении "Pos.png").
Далее генерируемое число подаю на вход макроса, который запоминает сгенерированное число (см. во вложении "Memory.png").
На выходе получил четыре дискретных выхода которые дают команду позиционировать клапанов.

IVM
23.03.2023, 10:30
Здравствуйте. Вячеслав.

Подправил функцию многоуважаемого ЦапЗап-а (см. во вложении "Pos1.png"). На вход подал сумму/произведение настоечных параметров + секунды минуты и часы подмешал (см. во вложении "Pos.png").
Далее генерируемое число подаю на вход макроса, который запоминает сгенерированное число (см. во вложении "Memory.png").
На выходе получил четыре дискретных выхода которые дают команду позиционировать клапанов.

А зачем для позиционирования клапанов нужен ГСЧ ?

Gans
23.03.2023, 11:08
Здравствуйте, IVM.

А зачем для позиционирования клапанов нужен ГСЧ ?
На объекте сейчас несколько таких ПР200 с этим алгоритмом (дальше больше). И что бы одновременно клапана на теплоносителе не закрывались нужно развязать во времени процедуру позиционирования.

Сергей0308
23.03.2023, 11:50
Здравствуйте, IVM.

На объекте сейчас несколько таких ПР200 с этим алгоритмом (дальше больше). И что бы одновременно клапана на теплоносителе не закрывались нужно развязать во времени процедуру позиционирования.

Не так давно вопрос разрешали, в смысле, разруливали проблему одновременного запуска насосов, короче, устанавливали минимальный период включения насосов, в смысле, если пришла команда запуска двух и более насосов, один запускался сразу, другие по очереди с установленным периодом времени, может Вам это больше подойдёт, в смысле, там и приоритеты можно назначить, если потребуется!
https://owen.ru/forum/showthread.php?t=9398&page=683
В вашем случае в принципе непонятно, как связан ГСЧ с "развести" по времени сигналы?

Gans
23.03.2023, 15:29
Здравствуйте, Серегй.

В вашем случае в принципе непонятно, как связан ГСЧ с "развести" по времени сигналы?
На объекте три ПР200 с этим алгоритмом (дальше больше) и при подаче питания на них одновременно в них генерится разное время периода позиционирования клапанов.
Понимаю, что такой ситуации может никогда и не произойти. Но раз уж позиционирование избежать не удалось, то пусть будет в разное время.
P. S. Не хотел грузить подробностями форумчан, по этому задавал вопросы именно про ГСЧ.