Блок RANDOM
Блок RANDOM
Ребята, подскажите плиз.
В штатном блоке RANDOM, можно ли сделать так, что бы выбор следующего случайного числа не совпадал с предыдущим?
Я понимаю, что случайно, значит что угодно, но мне в гирлянде получается некрасиво, когда подряд мигают одни и те же LEDы. А такое очень часто происходит. Я перебираю 8 чисел, вроде как есть из чего выбирать, а оно лепит подряд одно и тоже число время от времени.
Есть рецепт?
В штатном блоке RANDOM, можно ли сделать так, что бы выбор следующего случайного числа не совпадал с предыдущим?
Я понимаю, что случайно, значит что угодно, но мне в гирлянде получается некрасиво, когда подряд мигают одни и те же LEDы. А такое очень часто происходит. Я перебираю 8 чисел, вроде как есть из чего выбирать, а оно лепит подряд одно и тоже число время от времени.
Есть рецепт?
- nalnik
- Подполковник
- Сообщения: 1320
- Зарегистрирован: 14 май 2016, 17:12
- Откуда: Кисловодск
- Имя: Александр
Блок RANDOM
В штатном не получится.
Если есть свободный аналоговый вход -
https://doc.arduino.ua/ru/prog/Random
https://arduinoplus.ru/coding-arduino/f ... rs/random/
попробуйте, или попросите помочь с созданием блока, думаю вам помогут.
Если есть свободный аналоговый вход -
https://doc.arduino.ua/ru/prog/Random
https://arduinoplus.ru/coding-arduino/f ... rs/random/
попробуйте, или попросите помочь с созданием блока, думаю вам помогут.
Я хочу быть добрее, но люди сами нарываются.
- AlexCrane
- Капитан
- Сообщения: 903
- Зарегистрирован: 20 окт 2017, 13:22
- Откуда: Ульяновск
- Имя: Александр
- Поблагодарили: 12 раз
Блок RANDOM
Чисто теоретически, если генерировать случайное число не 1 до 8, а 1 до 32768 и через блок SCALE привести к 1 до 8, то результат будет получше 

Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Если нет возможности отблагодарить материально, хотя бы оцени пост....
- brig62
- Лейтенант
- Сообщения: 469
- Зарегистрирован: 13 май 2016, 16:37
- Откуда: Казань
- Имя: Игорь
- Благодарил (а): 1 раз
Блок RANDOM
Это вряд ли))
Напрашивается вариант с запоминанием последних нескольких значений и не пропусканием их через блоки сравнения. Как реализовать пока не знаю. Видимо через массив. Гуры подскажут.
Просто не использовал массив еще ни разу. Но копать начал бы с него.
Блок RANDOM
Генерируйте числа до 7 и к предыдущему прибавляйте новое, тогда подряд два одинаковых числа небудет
когда мастерю обычно подсматриваю,
не рыли ли окоп в том же направлении,
не изобретали ли велосипед с такими-же квадратными как у меня колёсами,
а уже потом - не торопясь, торю свою лыжню
не рыли ли окоп в том же направлении,
не изобретали ли велосипед с такими-же квадратными как у меня колёсами,
а уже потом - не торопясь, торю свою лыжню
- Phazz
- Полковник
- Сообщения: 3120
- Зарегистрирован: 17 окт 2016, 15:38
- Откуда: Сургут
- Имя: Анатолий
- Благодарил (а): 232 раза
- Поблагодарили: 111 раз
Блок RANDOM
Поставить компаратор и сравнивать с предыдущим числом а выход с компаратора на вход блока вместе с кнопкой рандома. Если числа будет равные перебор продолжится.
Блок RANDOM
Оставим этот рецепт на потом.

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

- nalnik
- Подполковник
- Сообщения: 1320
- Зарегистрирован: 14 май 2016, 17:12
- Откуда: Кисловодск
- Имя: Александр
Блок RANDOM
Помню очень давно делал для "синклера" потом для 486 компа -
RANDOM с любой математикой делал одно и тоже.
Заполнял экран монитора точками с инверсией, где Х и У координаты выбирались RANDOM.
В начале весь экран равномерно зажигал пиксели - затем точно также их тушил до чистого экрана и так по кргу,
и дополнительная математика только влияла на скорость появления точек --
Аналоговый вход не я придумал - и это реально вам поможет
RANDOM с любой математикой делал одно и тоже.
Заполнял экран монитора точками с инверсией, где Х и У координаты выбирались RANDOM.
В начале весь экран равномерно зажигал пиксели - затем точно также их тушил до чистого экрана и так по кргу,
и дополнительная математика только влияла на скорость появления точек --
Аналоговый вход не я придумал - и это реально вам поможет
Я хочу быть добрее, но люди сами нарываются.
Блок RANDOM
Я не программист. Я с блоками то начал совсем недавно.
Мне с кубиками хоть что-то понятно.

Блок RANDOM
рандом это и есть случайное число и могут быть некоторые подряд..
тут задача как бы выборка чисел от 1 до 8 в случайном порядке
как здесь функция лотто https://www.planetaexcel.ru/techniques/2/94/
тут задача как бы выборка чисел от 1 до 8 в случайном порядке
как здесь функция лотто https://www.planetaexcel.ru/techniques/2/94/
Блок RANDOM
Ну это я понимаю, сразу же и написал.dizzyy писал(а): 08 апр 2018, 15:36рандом это и есть случайное число и могут быть некоторые подряд..
Кажись получилось. Правда долго ломал голову, как одновременно переключать и сравнивать. Но вроде заработало. Платы 5,6,7.Phazz писал(а): 08 апр 2018, 11:00Поставить компаратор и сравнивать с предыдущим числом а выход с компаратора на вход блока вместе с кнопкой рандома. Если числа будет равные перебор продолжится.
Теперь подскажите пожалуйста, как делается эффект падающей капли? Принцип? На 3й плате сделал бегущий огонек. Хотелось бы добавить эффект "сосульки".
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Лейтенант
- Сообщения: 373
- Зарегистрирован: 25 фев 2018, 17:56
- Имя: sonata
Блок RANDOM
если гирлянда, не проще ли юзать заранее заданные алгоритмы? будет и красиво и симметрию/асимметрию легко сделать
ну или пойти путем ледкуба

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

Теперь бег по кругу, после нажатия кнопки, хочу сделать с затуханием, "сосулька".
https://youtu.be/kG1juzj_Q6Q
Блок RANDOM
Полностью согласен, но пока делал пример нашлось другое решение. Тем не менее, можно заполнять массив результатами блока рандом и при выпадении числа, которое уже есть в массиве, заменить его числом что находится под самым старшим индексом (4 или 0 в блоке GetFromArray) в этом массиве. Здесь помогут штатные блоки (см.проект). Делать блок на Си нецелесообразно, но если есть необходимость, то можно за счёт оптимизации типов переменных съэкономить 10 байт Flash и 4 байта SRAM заменив их байтовыми прямо в ИДЕ.
Колличество элементов массива на мой взгляд оптимально. Пробуйте (не проверено в железе) и удачи!
Похоже он в штатном блоке используется (см. код) randomSeed(analogRead(0));
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Блок RANDOM
Спасибо ребята!
Повторение того же самого числа в блоке Рандом, я поборол. См. проект выше.
Теперь буду с сосулькой воевать.
Повторение того же самого числа в блоке Рандом, я поборол. См. проект выше.
Теперь буду с сосулькой воевать.

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