Например TDA7294

Форум РадиоКот • Просмотр темы - Алгоитм получения случайного цвета
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт май 08, 2025 01:40:10

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 20 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Алгоитм получения случайного цвета
СообщениеДобавлено: Вт июн 11, 2019 12:47:56 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18378
Откуда: Новочеркасск
Рейтинг сообщения: 4
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
в моём проекте DIGISCRIPT для формирования случайных чисел я использую функцию rand(). все её ограничения по длине псевдослучайной последовательности мне известны и никак не мешают. для получения случайного байта в первой версии проекта я тупо отбрасывал старший байт возвращаемого rand() значения, а для формирования еще меньших чисел, использовал результат операции %, т.е. если хотел получить случайное число не более 25, то делал так: rand() % 25
во второй версии я учел недостатки вышеописанного подхода и теперь использую такой вариант получения случайного числа с ограничением:
Код:
int range_rand(int range){
   return (rand() * (uint32_t)range)/RAND_MAX;
}
наверное, можно еще как-то улучшить... но сейчас вопрос о другом.

вопрос о том, что для получения случайного цвета используется эта самая функция range_rand(0x100), которая определяет условный номер оттенка. и часто бывает так, что она возвращает, например, подряд 1 и 2 или 5 и 7, т.е. достаточно близкие оттенки, глазом воспринимаемые, как одинаковые.

так вот, в чем, собственно, вопрос: как улучшить выбор случайного номера оттенка из диапазона 0...255 так, чтобы не возникало подряд два близких оттенка?

пока применяю вариант проверки: пока получаю номер оттенка, отличающийся от предыдущего меньше, чем на заданную величину, повторяю вызов функции случайного числа. оно вроде работает, но не так, чтобы я был совсем доволен...

что посоветуете?

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Вт июн 11, 2019 13:38:25 
Собутыльник Кота
Аватар пользователя

Карма: 38
Рейтинг сообщений: 292
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2594
Откуда: деревня в Тульской губернии
Рейтинг сообщения: 4
Медали: 1
Получил миской по аватаре (1)
ARV, прибавляйте к текущему цвету, например, 4, а затем псевдослучайное число в интервале от 0 до 247 (255-4*2)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Вт июн 11, 2019 13:52:34 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18378
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
чевой-то не понял... допустим, текущий цвет 5. я прибавил 4, получил 9. запросил случайное число от 0 до 247 и получил 6.
как это мне помогло?

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Вт июн 11, 2019 14:27:54 
Собутыльник Кота
Аватар пользователя

Карма: 38
Рейтинг сообщений: 292
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2594
Откуда: деревня в Тульской губернии
Рейтинг сообщения: 4
Медали: 1
Получил миской по аватаре (1)
ARV, хорошо, пусть текущий цвет 5. 5+4=9. Теперь прибавляем случайное число от 0 до 248 (так правильней, но не суть). Если оно 0, то 5+4+0=9. Если 248, то 5+4+248=257=1.
То есть, прежний цвет 5 будет отличаться от нового, как минимум, на +-4. Вы же это хотели?


Вернуться наверх
 
Открыт интернет-магазин MEAN WELL.Market – весь ассортимент MEAN WELL, выгодные цены

Открыта удобная площадка с выгодными ценами, поставляющая весь ассортимент продукции, производимой компанией MEAN WELL – от завоевавших популярность и известных на рынке изделий до новинок. MEAN WELL.Market предоставляет гарантийную и сервисную поддержку, удобный подбор продукции, оперативную доставку по России. На сайте интернет-магазина посетители смогут найти обзоры, интересные статьи о применении, максимальный объем технических сведений.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Вт июн 11, 2019 14:36:24 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18378
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
а, вон оно чо! я как-то слово "прибавляйте" отнес только к числу 4, а что еще и случайное надо прибавлять, это как-то ускользнуло.
теперь понятно.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
LED-драйверы MOSO - надежные решения для индустриальных приложений

Продукция MOSO предназначена в основном для индустриальных приложений, использует инновационные решения на основе более 200 собственных патентов для силовой электроники и соответствует международным стандартам. LED-драйверы MOSO применяются в системах наружного освещения разных отраслей, включая промышленность, сельское хозяйство, транспорт и железную дорогу. В ряде серий реализована возможность дистанционного контроля и программирования работы по заданному сценарию. Разберем решения MOSO подробнее>>
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Вт июн 11, 2019 14:39:59 
Друг Кота
Аватар пользователя

Карма: 51
Рейтинг сообщений: 2108
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6992
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (2)
ну, да, весьма логично, если переменная 8бит:
рнд (247) принимает значения от 0 до 247
плюс 4 - и будет от 4 до 251 (от 4 до -4 если тип сигнед чар)
если к нему добавить х то в ответе будет х' отличающееся от х не менее чем на 4 в любую сторону...
правда разом на 100% яркость не изменится, т.к. для этого алгоритма 255 сосед 0...

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Вт июн 11, 2019 15:43:26 
Собутыльник Кота
Аватар пользователя

Карма: 38
Рейтинг сообщений: 292
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2594
Откуда: деревня в Тульской губернии
Рейтинг сообщения: 7
Медали: 1
Получил миской по аватаре (1)
Ivanoff-iv, можно допилить алгоритм. Прибавлять к текущему цвету MIN(3,255-c)+1, а случайное числоа брать не до 256-2*4, 255-MIN(3,255-c)-MIN(4,c) - где с - текущий цвет.
То есть, для цветов от 0 до 3 допускать суммарное приращение вплоть до 255, а для цветов 252-255 начинать приращение с нуля.

ARV, благодарить у Вас не принято? :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Вт июн 11, 2019 16:55:14 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18378
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Ivanoff-iv писал(а):
правда разом на 100% яркость не изменится, т.к. для этого алгоритма 255 сосед 0...
не понял, при чем тут яркость, но индекс 0...255 это условный "градус" цветового круга в модели HSV, т.е. и 0 и 255 - это оттенки яркокрасного цвета :)
ПростоНуб писал(а):
благодарить у Вас не принято?
у нас не принято выпрашивать.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Вт июн 11, 2019 17:18:08 
Друг Кота
Аватар пользователя

Карма: 51
Рейтинг сообщений: 2108
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6992
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (2)
индекс 0...255 это условный "градус" цветового круга
тогда ладно...
ПростоНуб писал(а):
благодарить у Вас не принято?
у нас не принято выпрашивать.

смотри ПростоНуб, сейчас ещё и должен останешься... :))) :))) :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Чт ноя 21, 2019 18:42:17 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18378
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
я возвращаюсь к теме о генерации случайноо цвета.
предложенный выше алгоритм особого эффекта не дает.
генератор псевдослучайной последовательности из avr-libc слишком часто выдает числа, находящиеся рядом, например 2015 и 2000. поскольку я "масштабирую" это число к диапазону 0-255, то естественно, что результат получается один и тот же...
то есть проблема в генераторе случайных чисел есть, и она мешает жить... истинная случайность, как для криптографии не нужна, нужна "красивая" случайность, то есть чтобы после красного почти всегда был не-красный, а после голубого был не-голубой.
хуже всего еще то, что при поиске случайных файлов, наблюдается тот же эффект: значительно чаще "выпадают" файлы с номером где-то в середине списка, чем на краю...
все это огорчает.

нет ли каких идей для исправления этой ситуации? грубо говоря, нужна функция rnd(int x), которая бы возвращала число от 0 до x (не включая), и при этом вероятность того, что два раза подряд она выдаст одинаковое число была ненулевой, но более-менее малой, а распределение тем не менее стремилось к равномерному?

возможно, есть какой-то принципиально альтернативынй способ управления случайным цветом и номером файла... но я не могу никак его найти...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Чт ноя 21, 2019 18:59:00 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
Ну ты как не электронщик прямо! Делай srand из канала АЦП, на котором антенна болтается.
А чтобы реально кошерный набор случайных цветов генерить, сначала проиндексируй их - сделай 256 базовых цветов, из них и выбирай.
По крайней мере, обязательно нужно уйти от модели RGB. Можно, например, HSV использовать…
// а, увидел, тут уже HSV используется.. Ну, а ГСЧ все-таки должен быть аппаратным. Можно копить энтропию из промежутков между внешними прерываниями, АЦП (как я уже говорил), еще чего-нибудь.. Абы источников случайных величин было как можно больше. Тогда получим примерно гауссиану. Ее при помощи математики легко в равномерное распределение преобразовать.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Чт ноя 21, 2019 19:25:37 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18378
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
антенна на канале АЦП будет давать четкую корелляцию с сетью. поскольку в моем устройстве идет привязка к интервалам по 10 мс, сомневаюсь, что эта идея даст хоть сколько-нибудь лучший результат, чем то, что есть сейчас...

не нужна истинная случайность, я уже говорил. нужна простая, "человеческая", красивая последовательность, которую просто сложно предсказать зрителю

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Чт ноя 21, 2019 19:44:08 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
Ну так псевдослучайные числа - на то и псевдослучайные, что фигня полная…
Можно фликкер-шум использовать. Там, правда, 1/f, но все лучше, чем псевдослучайные числа.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Чт ноя 21, 2019 19:51:11 
Потрогал лапой паяльник
Аватар пользователя

Карма: 7
Рейтинг сообщений: 40
Зарегистрирован: Пт дек 11, 2015 12:56:49
Сообщений: 316
Откуда: Ростов на Дону
Рейтинг сообщения: 0
А если считать хеш-функцию от текущего цвета и принимать результат за новый цвет? Если цвет 24 битный, то можно crc32 использовать, и обнулять младший или старший байт. На выбор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Чт ноя 21, 2019 19:56:36 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18378
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
допустим, для цвета это могло бы быть интерсным, а как на счет номера файла? тоже от текущего номера считать?
и какую хеш-функцию можете предложить?

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Чт ноя 21, 2019 23:18:16 
Друг Кота

Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53
Сообщений: 3092
Откуда: москва, уфа
Рейтинг сообщения: 0
продолжать выбивать случайные числа, пока выпавшее значение не станет отличаться от текущего цвета/номера более некоторой дельты - самое то имхо.

из "большого" stdlib попытаться утащить реализацию генератора с равномерным распределением - какого-нибудь lrand48


Последний раз редактировалось arkhnchul Пт ноя 22, 2019 07:03:40, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Пт ноя 22, 2019 03:29:05 
Друг Кота
Аватар пользователя

Карма: 51
Рейтинг сообщений: 2108
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6992
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (2)
если кажется, что рандом неправильный - исправь! крути доску как одинокий шахматист: Учет=рнд(х), Унечет=(рнд(х)+х/2)%х
или на треть оборота - также, только добавляй поочереди 0, х/3, 2х/3...
и твои рядомстоящие результаты окажутся совсем не рядом

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Пт ноя 22, 2019 11:06:39 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18378
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
arkhnchul писал(а):
продолжать выбивать случайные числа, пока выпавшее значение не станет отличаться от текущего цвета/номера более некоторой дельты - самое то имхо
нет, это плохо: слишком недетерминированная длительность генерации числа в этом случае. мои эксперименты показывают, что подряд может быть больше десятка "близких" чисел.
Ivanoff-iv писал(а):
крути доску как одинокий шахматист
уже интересней... попробую экспериментально проверить, как это скажется на наблюдаемый результат.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Пт ноя 22, 2019 23:30:48 
Мучитель микросхем

Карма: 7
Рейтинг сообщений: 44
Зарегистрирован: Ср июн 21, 2006 08:24:32
Сообщений: 465
Откуда: Лисичанск
Рейтинг сообщения: 0
Посмотрите здесь: http://forum.avr.ru/algoritm-poluchenii ... 98560&


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Алгоитм получения случайного цвета
СообщениеДобавлено: Сб ноя 23, 2019 13:20:14 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18378
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Спасибо, попробую.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 20 ] 

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y