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

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

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

Сообщение Yushik (Андрей) » 25 мар 2021, 14:55

Здравствуйте коллеги мне для создания одного проекта понадобился генератор случайных (false, true) битов. Суть его состоит так: допустим мы имеем переменную ULong в которой мы будем использовать только младшие 20 битов. Мне нужна случайная последовательность из 0 и 1 в которых количество битов равных нулю будет равна 10, а также количество битов равных единице будет тоже равно 10. При этом единицы и нули не должны повторяться 5 раз подряд. Функция С+ random(); мне не подходит т. к. не удовлетворяет данным требованиям. Может у кого есть такие наработки, при изучении функции random(); я выяснил что она генерит случайные числа в диапазоне от 0....32767 внизу я дал пример генератора случайных чисел в заданном пользователем диапазоне может кому сгодиться.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Yushik
Имя: Андрей
(Симферополь)
Гуру
Гуру
Информация о пользователе

Re: Генератор случайных событий.

Сообщение Enigm (Enigm) » 25 мар 2021, 19:34

А чем не устраивает ?
Чет будет 1 , нечет будет 0. или что вам там нужно.
Или я нифигаане понял.
Аватар пользователя
Ник: Enigm
Имя: Enigm
(Сочи)
Гуру
Гуру
Информация о пользователе

Re: Генератор случайных событий.

Сообщение Yushik (Андрей) » 25 мар 2021, 20:05

Enigm писал(а):А чем не устраивает ?
Чет будет 1 , нечет будет 0. или что вам там нужно.
Или я нифигаане понял.

Здравствуй Enigm Я сёйчас делаю контроллер управления кабаном бегущей мишенью в тир. По регламенту соревнование состоит из 20 выстрелов, мишень может двигаться с двумя скоростями быстрой 4 м\с. и медленной 2 м\с. На тренировках обычно используют 20 медленных проходов или 20 быстрых проходов, на соревновании используют смешанный режим при том же количестве выстрелов. В моём случае быстрой скорости будет использоваться лог. 1 медленной лог. 0, по тому же регламенту количество быстрых проходов должно быть 10 из 20, медленных столько же. Медленные и быстрые проходы могут идти друг за другом в случайном порядке но повторяться только медленные или только быстрые могут не больше 5 раз подряд.
P. S. С помощью кода который я дал выше можно сгенерить лог. 0 и 1 в случайном порядке но количество нулей и едениц не совпадёт при этом.
Аватар пользователя
Ник: Yushik
Имя: Андрей
(Симферополь)
Гуру
Гуру
Информация о пользователе
Вернуться наверх

Re: Генератор случайных событий.

Сообщение Enigm (Enigm) » 25 мар 2021, 20:57

Тогда походу только всякими условиями отфильтровывать нужные параметры.
И да рандом может быть совсем не рандомный, если его запускать с одинаковыми параметрами.
Вам похоже надо сначала набивать 20 проходов с нужными параметрами и только потом отсылать их на исполнение.
Так будет думаю проще, ибо параметров всего 2 , нужно 10 едениц и нулей, и не более 5 раз подряд.
Последний раз редактировалось Enigm 25 мар 2021, 23:12, всего редактировалось 1 раз.
Аватар пользователя
Ник: Enigm
Имя: Enigm
(Сочи)
Гуру
Гуру
Информация о пользователе
Вернуться наверх

Re: Генератор случайных событий.

Сообщение Enigm (Enigm) » 25 мар 2021, 22:28

В общем посидел покумекал и вот что получилось.
На основе, четное рандомное число или нет.
Но можно прикрутить что нить другое.
Хотя пробовал и сразу 0 или 1 рандомить, и от 0 до 10 , разницы с чет, нечет не заметил.
Макрос заполняет массив из 20 элементов нулями и единицами.
Единицы или нули не могут быть больше чем пять штук подряд.
В массиве всегда 10 единиц и 10 нулей.
Так что.
Пускаем макрос, заполняем массив.
Дольше уже ваша автоматика по очереди вытаскивает из массива данные и выполняет нужные действия.
Как массив весь прочитали, опять вызываем макрос и массив,опять готов к работе.
Может и перемудрил немного, но все что по быстрому пришло в голову.
Может криво и косо, но работает как указанно в ТЗ.
Может кто лучше алгоритм придумает.
Погонял в протеусе , сбоев не обнаружил.
Да писал для пик , ибо авр у меня не компилит.
Но думаю это не проблема.
2.fcf
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Enigm
Имя: Enigm
(Сочи)
Гуру
Гуру
Информация о пользователе
Вернуться наверх

Re: Генератор случайных событий.

Сообщение Enigm (Enigm) » 26 мар 2021, 08:01

Ах да, забыл про недостатки данной реализации.
1) Если с самого начало или с середины выпало 5 нулей или едениц, то следующие будут обязательно тоже 5 нулей или едениц.
2) если нужно больше 20 значений, то так же могет быть так что, на стыке буферов будет больше 5 едениц или нулей, тоесть первый буфер например закончился на 4 нулях, то новый может начаться тоже с 4 нулей и будет уже 8 ))
Поэтому тут уже надо нарашивать сам буфер если это надо.
Первый вариант бывает очень редко, но бывает и могут стрелки просечь ))
Но тут можно тогда сделать ограничение не в 5 символов, а в 4 , тогда не будет такой четкой зависимости.
Аватар пользователя
Ник: Enigm
Имя: Enigm
(Сочи)
Гуру
Гуру
Информация о пользователе
Вернуться наверх

Re: Генератор случайных событий.

Сообщение Yushik (Андрей) » 26 мар 2021, 18:56

Огромное спасибо Enigm теперь у меня появился толчок к пониманию подобных алгоритмов, поскольку для меня такая задача встретилась впервые. Да в нём имеется минус и он хорошо просматривается если было например 3 единицы то следующими обязательно будут 3 нуля. Ну да ладно я прекрасно понимаю, что в технике да и в жизни тоже, если ты гонишься за определёнными плюсами то при этом появляются определённые минусы. Нам дан только выбор наслаждаться плюсами и как то противостоять или смириться с появившимися минусами. Я пожалуй попробую побороться с данным минусом или на основе твоего алгоритма сделать что-то своё если получится обязательно выложу. Но даже в таком виде уже готовое решение.
Аватар пользователя
Ник: Yushik
Имя: Андрей
(Симферополь)
Гуру
Гуру
Информация о пользователе
Вернуться наверх


Вернуться в ПЕСОЧНИЦА

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей

cron