??? ???? ???
Вид для печати
Какова частота смены числа нужна ?Или сделать ее тоже случайной
Случайная, но чаще 1-5 минут ( был бы вход, а частоту можно задать)
могу сделать,
1) на входе случайное число 0-63 (т.к. я так и не понял где и как вы его будете брать)
2) на выходе "проверенное", по битовой маске, т.е. если то что на входе "занято", то выдаст ближайшее следующее "свободное"...
(если все заняты - маска сбрасывается)
надо?
Вот вам генератор случайных чисел от 0-63 ,с гарантией ,что нет повторения и что все числа перебраны ,а также со случайной сменой времени выдачи числа (1-6мин)
Ваша задача забить сами случайные числа в макросы ППЗУ .Остальное сделает схема .Причем каждый новый цикл генерации начинается со случайного числа,то есть начальный адрес ппзу в каждом следующем цикле будет разным.
мой вариант генератора, с проверкой по битовой маске.
Всё равно не пойму, почему именно надо случайные и все варианты, и нельзя просто автоматически по порядку перебрать все варианты))))
я это понимаю, нужно разобрать все ситуации, только перебор всех ситуаций последовательно приведёт к такому же анализу, вот про что я говорю, зачем в разброс со случайным выбором
Так и в случае с ГСЧ ,такая последовательность(1,3,2) может случится через 100лет ,а проверка ,как я понял производится автором задания -сутки :D ;) .
Тогда 1000лет потребуется (6 из 63):D ,в смысле не просто комбинация ,а определенная последовательность из 6 чисел.:rolleyes: ;)
Уже час крутится ,осталось еще 10000000часов:D .
Не просто откроются окна ,а в той последовательности ,которую вы указали .
Постараюсь сформулировать не задание, а видение вопроса, как бы я сделал:
Первое это ГСЧ, тут просто взял бы у когото.
Второе контроль повторов, поставил бы дешифратор вход:шесть разрядов, выход 64-разрядный унитарный код, сравнил бы с маской, если не равна то выход дешифратора через OR с маской и присвоил бы маске. Так же, не равенство сигнализировало бы о появлении нового случайного числа.
В третьих чтоб была менее заметна пауза когда большинство цифр уже заполнено, сделал чтоб генератор молотил с максимальной частотой, а на выход новое число выдавалось через таймер. Это как минимальное время цикла в плк, если программа выполнилась за более короткое время то ждем пока закончится цикл, если время превышено то ждем завершения программы и переходим на следующий цикл
А вот и анализ макроса rnd64 -вот список чисел которые макрос генерит (первые 64),запоминаются в стеке.Еще бы сделать данный макрос ,аналогичный первому ,в котором есть вход задания макс. числа ,которое выдается на выход.Вот тогда бы это был бы шедевр (без повторений)
Специально для вас потраха макроса;) :)
:) как обычно, выглядит удручающе из-за отсутствия убрать группы компонентов с помощью макрос_в_макросе, да и такую схему тестить надо, что куда и т.д. и т.п.
частично уже протестировал ,смотрите выше принтскрипы.
есть и второй вариант.
делает тоже самое, но немного по-другому.
и ещё немного недоделан...
:) будь он проклят этот прогресс, раньше бы сел, да на коленке в тетради нарисовал бы проект, аннет жду когда лоджик будет мне рукой, я сейчас подумал что в своем варианте столкнусь с проблемой запихать 64 разряда в одно целочисленное.
Без дробления это можно как то сравнивать и сохранять, а то с делением на составные части увеличится количество блоков
ну да, то что 64 разряда не влазят в 32х битную переменную - основная проблема схемы.
на 32 бита я сделал быстро, а вот 64 - пришлось попыхтеть... (и даже возникло желание сделать второй вариант)
второй вариант, кажись, готов
он оказался более прожорлив к стеку....
Кажется первый лучше ,потому как есть повторения;) :) .
а вы точно на второй цикл не "заскочили"?
т.к. после сброса счётчика, он запросто может выдать то же случайное число, что и только что...
PS я и 31 вижу второй раз есть...
У меня счетчик стоит на 64 ,который запускается при старте проекта и останавливает генератор ,через триггер.Я другие повторения не смотрел ,как увидел первое ,так и сообщил.
нашел глюк, исправил. (скачайте снова)
и выложите снова такую же картинку... обновлённую...
(интересно сравнить вывод обоих версий)
Вот ,вроде нормально.А как с входом целочисленным в макросе ,хоть теоретически возможно?
а если мне нужно формировать слчауные числа до 24 или 36 или 49...
Вот вам за это стек на 128 чисел ,анализируйте ,что выдал ваш макрос(сложностей не боюсь).
А кто сказал ,что все макросы для ПР110 .Каждому кораблю -свое море.Ваш макрос я то же анализировал на Пр114 .
[QUOTE=AI!;98528]в принципе красиво, интересно что скажет "заказчик".
куда-то он подевался.
Я на месте, занимаюсь оптимизацией пр-ммы, которую планирую проверять.
Краем глаза наблюдаю за вашим творчеством. Думаю, что у вас все получится. Проект ГСЧ понадобится только через 2 дня и если все как я задумал + ваш превосходный ГСЧ, то работу закончу к Новому году( экономия 2 недели)
Могарыч с Вас)))) в виде фоток законченого продукта))
прибрался в первом варианте, убрал пару лишних блоков...
(можно сказать, что прибирался у себя в голове, и готовлюсь сделать rnd с любым числом, как просил rovki)