Блок RANDOM

Вопросы по встроенным блокам
Ответить
Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18 дек 2017, 03:16
Откуда: Питер

Блок RANDOM

Сообщение Rishelie »

Ребята, подскажите плиз.
В штатном блоке RANDOM, можно ли сделать так, что бы выбор следующего случайного числа не совпадал с предыдущим?
Я понимаю, что случайно, значит что угодно, но мне в гирлянде получается некрасиво, когда подряд мигают одни и те же LEDы. А такое очень часто происходит. Я перебираю 8 чисел, вроде как есть из чего выбирать, а оно лепит подряд одно и тоже число время от времени.
Есть рецепт?
Аватара пользователя
nalnik
Подполковник
Сообщения: 1320
Зарегистрирован: 14 май 2016, 17:12
Откуда: Кисловодск
Имя: Александр

Блок RANDOM

Сообщение nalnik »

В штатном не получится.
Если есть свободный аналоговый вход -
https://doc.arduino.ua/ru/prog/Random
https://arduinoplus.ru/coding-arduino/f ... rs/random/
попробуйте, или попросите помочь с созданием блока, думаю вам помогут.
Я хочу быть добрее, но люди сами нарываются.
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

Блок RANDOM

Сообщение AlexCrane »

Чисто теоретически, если генерировать случайное число не 1 до 8, а 1 до 32768 и через блок SCALE привести к 1 до 8, то результат будет получше :crazy:
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Аватара пользователя
brig62
Лейтенант
Сообщения: 469
Зарегистрирован: 13 май 2016, 16:37
Откуда: Казань
Имя: Игорь
Благодарил (а): 1 раз

Блок RANDOM

Сообщение brig62 »

AlexCrane писал(а): 08 апр 2018, 07:46то результат будет получше
Это вряд ли))
Напрашивается вариант с запоминанием последних нескольких значений и не пропусканием их через блоки сравнения. Как реализовать пока не знаю. Видимо через массив. Гуры подскажут.
Просто не использовал массив еще ни разу. Но копать начал бы с него.
Аватара пользователя
Fuji1604
Сержант
Сообщения: 282
Зарегистрирован: 19 янв 2016, 06:09
Откуда: Березники
Имя: Сергей

Блок RANDOM

Сообщение Fuji1604 »

Генерируйте числа до 7 и к предыдущему прибавляйте новое, тогда подряд два одинаковых числа небудет
когда мастерю обычно подсматриваю,
не рыли ли окоп в том же направлении,
не изобретали ли велосипед с такими-же квадратными как у меня колёсами,
а уже потом - не торопясь, торю свою лыжню
Аватара пользователя
Phazz
Полковник
Сообщения: 3114
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 231 раз
Поблагодарили: 110 раз

Блок RANDOM

Сообщение Phazz »

Поставить компаратор и сравнивать с предыдущим числом а выход с компаратора на вход блока вместе с кнопкой рандома. Если числа будет равные перебор продолжится.
Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18 дек 2017, 03:16
Откуда: Питер

Блок RANDOM

Сообщение Rishelie »

nalnik писал(а): 08 апр 2018, 07:10попросите помочь с созданием блока, думаю вам помогут.
Оставим этот рецепт на потом. :) Программирование, это не я.
AlexCrane писал(а): 08 апр 2018, 07:46Чисто теоретически, если генерировать случайное число не 1 до 8, а 1 до 32768 и через блок SCALE привести к 1 до 8, то результат будет получше
Думаю вряд-ли. Мы же через SCALE будем приводить к 8ми числам некий диапазон. А вероятность выпадения числа в диапазоне, по идее, будет даже выше, чем среди 8 чисел. Трудно сказать, но мне кажется будет даже хуже.
Fuji1604 писал(а): 08 апр 2018, 10:47Генерируйте числа до 7 и к предыдущему прибавляйте новое, тогда подряд два одинаковых числа небудет
Что то не понял алгоритм.
Phazz писал(а): 08 апр 2018, 11:00оставить компаратор и сравнивать с предыдущим числом а выход с компаратора на вход блока вместе с кнопкой рандома. Если числа будет равные перебор продолжится
Сейчас буду пробовать. Наворот конечно получится. :)
Аватара пользователя
nalnik
Подполковник
Сообщения: 1320
Зарегистрирован: 14 май 2016, 17:12
Откуда: Кисловодск
Имя: Александр

Блок RANDOM

Сообщение nalnik »

Помню очень давно делал для "синклера" потом для 486 компа -
RANDOM с любой математикой делал одно и тоже.
Заполнял экран монитора точками с инверсией, где Х и У координаты выбирались RANDOM.
В начале весь экран равномерно зажигал пиксели - затем точно также их тушил до чистого экрана и так по кргу,
и дополнительная математика только влияла на скорость появления точек --
Аналоговый вход не я придумал - и это реально вам поможет
Я хочу быть добрее, но люди сами нарываются.
Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18 дек 2017, 03:16
Откуда: Питер

Блок RANDOM

Сообщение Rishelie »

nalnik писал(а): 08 апр 2018, 14:28Аналоговый вход не я придумал - и это реально вам поможет
Я не программист. Я с блоками то начал совсем недавно.
Мне с кубиками хоть что-то понятно. :)
Аватара пользователя
dizzyy
Капитан
Сообщения: 752
Зарегистрирован: 24 ноя 2017, 16:25
Откуда: Червоноград
Имя: Марьян

Блок RANDOM

Сообщение dizzyy »

рандом это и есть случайное число и могут быть некоторые подряд..
тут задача как бы выборка чисел от 1 до 8 в случайном порядке
как здесь функция лотто https://www.planetaexcel.ru/techniques/2/94/
whitevip
Лейтенант
Сообщения: 492
Зарегистрирован: 01 апр 2017, 20:25
Имя: Имя

Блок RANDOM

Сообщение whitevip »

Выложите проект, без проекта найти решение нам трудно. :crazy:
:smile37:
Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18 дек 2017, 03:16
Откуда: Питер

Блок RANDOM

Сообщение Rishelie »

dizzyy писал(а): 08 апр 2018, 15:36рандом это и есть случайное число и могут быть некоторые подряд..
Ну это я понимаю, сразу же и написал.
whitevip писал(а): 08 апр 2018, 16:39Выложите проект, без проекта найти решение нам трудно.
Phazz писал(а): 08 апр 2018, 11:00Поставить компаратор и сравнивать с предыдущим числом а выход с компаратора на вход блока вместе с кнопкой рандома. Если числа будет равные перебор продолжится.
Кажись получилось. Правда долго ломал голову, как одновременно переключать и сравнивать. Но вроде заработало. Платы 5,6,7.

Теперь подскажите пожалуйста, как делается эффект падающей капли? Принцип? На 3й плате сделал бегущий огонек. Хотелось бы добавить эффект "сосульки".
Панель-В19 тест RANDOM.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
pony sonata
Лейтенант
Сообщения: 373
Зарегистрирован: 25 фев 2018, 17:56
Имя: sonata

Блок RANDOM

Сообщение pony sonata »

Rishelie писал(а): 08 апр 2018, 00:42Есть рецепт?
если гирлянда, не проще ли юзать заранее заданные алгоритмы? будет и красиво и симметрию/асимметрию легко сделать
ну или пойти путем ледкуба :)
Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18 дек 2017, 03:16
Откуда: Питер

Блок RANDOM

Сообщение Rishelie »

pony sonata писал(а): 08 апр 2018, 18:49если гирлянда, не проще ли юзать заранее заданные алгоритмы? будет и красиво и симметрию/асимметрию легко сделать
Не совсем гирлянда. Алгоритмы там уже есть, просто хочется перебор их сделать случайным.
Ну и повторение одного и того же алгоритма - раздражает. :) Ну это я уже решил.
Теперь бег по кругу, после нажатия кнопки, хочу сделать с затуханием, "сосулька".

https://youtu.be/kG1juzj_Q6Q
Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25 янв 2018, 22:23
Откуда: Bukovyna
Имя: Василий

Блок RANDOM

Сообщение Labu559 »

brig62 писал(а): 08 апр 2018, 10:41Как реализовать пока не знаю. Видимо через массив
Полностью согласен, но пока делал пример нашлось другое решение. Тем не менее, можно заполнять массив результатами блока рандом и при выпадении числа, которое уже есть в массиве, заменить его числом что находится под самым старшим индексом (4 или 0 в блоке GetFromArray) в этом массиве. Здесь помогут штатные блоки (см.проект). Делать блок на Си нецелесообразно, но если есть необходимость, то можно за счёт оптимизации типов переменных съэкономить 10 байт Flash и 4 байта SRAM заменив их байтовыми прямо в ИДЕ.
Колличество элементов массива на мой взгляд оптимально. Пробуйте (не проверено в железе) и удачи!
nalnik писал(а): 08 апр 2018, 14:28Аналоговый вход не я придумал - и это реально вам поможет
Похоже он в штатном блоке используется (см. код) randomSeed(analogRead(0));
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18 дек 2017, 03:16
Откуда: Питер

Блок RANDOM

Сообщение Rishelie »

Спасибо ребята!
Повторение того же самого числа в блоке Рандом, я поборол. См. проект выше.

Теперь буду с сосулькой воевать. :)
Ответить

Вернуться в «Штатные блоки»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя