|
Простой ГСП на Си |
|
|
|
 |
Ответов
|
Jan 18 2014, 22:16
|

Гуру
     
Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287

|
Цитата(Fat Robot @ Jan 18 2014, 16:15)  Не нужно вам никакого деления и остатка от деления. Сразили! Я и слов-то таких не знаю: fractional.  Буде Ваша воля пояснить свою идею попроще, постараюсь разобраться... Цитата(SM @ Jan 18 2014, 22:42)  Ну а если аппаратное умножение имеется, то тут, разумеется, совсем другой расклад по производительности. Но вроде в обычном PIC его и нету... На данном этапе имеется PIC18, в котором аппаратное умножение присутствует. Но хочется перенести проект на PIC16, где на эту задачу желательно потратить минимум ресурсов. Цитата(Victor® @ Jan 18 2014, 23:12)  Что-то все все усложняют... На светодиод наверное человек смотреть будет? Так вот через несколько он забудет, что видел при этом моргании. Просто сделайте таблицу на пару минут и все... Или игровой автомат? Тогда запись на видео лишит всего дохода... П.С. Или Вам надо офигенно нормальное распределение? Увы - ничего не выйдет.... Да нет, светодиод - это пример, упрощение. На самом деле нужно посылать некий сигнал, но нерегулярно. Чтобы не привыкнуть. Таблица отпадает - памяти маловато. Хотя... Но, от добра добра не ищут: пример от ув. SM очень даже ничего.
|
|
|
|
|
Jan 18 2014, 23:55
|
ʕʘ̅͜ʘ̅ʔ
    
Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691

|
Объясню предельно просто, не жонглируя терминологией Пусть генератор после всех преобразований имеет выход X в диапазоне [0; (2^n)-1] нужно и можно найти такие постоянные значения Y и Z, чтобы значение числа round((X*Y) >> Z) лежало в диапазоне [0; max-min] Все, что для этого нужно это (((max-min) * X ) + (1 << (n - 1))) >> n. Пусть n=7, a max-min=27 X в диапазоне [0; 127] ((X*27)+64)>>7 будет лежать в диапазоне [0;27] выход операции умножения 16 бит Если операции умножения у вас нет, но есть немного свободы в выборе значения для разности max-min, то нужно выбрать такое значение, чтобы в нем было как можно меньше единиц в двоичных разрядах, тогда умножение из общего случая упростится в сумму сдвигов. пусть вместо 27 из примера вас устроит 24 = (2^4) + (2^3), тогда преобразование будет таким: (( X << 4 ) + ( X << 3 ) + 64 )>>7 и выход будет лежать в диапазоне [0;24] Цитата(Herz @ Jan 18 2014, 23:16)  Буде Ваша воля пояснить свою идею попроще, постараюсь разобраться...
|
|
|
|
Сообщений в этой теме
Herz Простой ГСП на Си Jan 17 2014, 19:13 thermit x(n)=(1664525*x(n-1)+32767) mod 2^32 и берем старш... Jan 17 2014, 19:21 TSerg Любой RNG на основе сдвигового регистра 8 р, но лу... Jan 17 2014, 19:28 Herz Спасибо, коллеги за скорую помощь!
Цитата(... Jan 17 2014, 19:50  aaarrr Цитата(Herz @ Jan 17 2014, 23:50) Я тольк... Jan 17 2014, 19:52   Herz Цитата(aaarrr @ Jan 17 2014, 21:52) Она н... Jan 17 2014, 20:04 SM интервал определен как [offset, offset+max)
два в... Jan 17 2014, 20:49 Herz Спасибо, SM!
Но, по правде говоря, ничего не п... Jan 17 2014, 22:04 SM Цитата(Herz @ Jan 18 2014, 02:04) Вас на ... Jan 18 2014, 07:38  _Pasha Цитата(SM @ Jan 18 2014, 11:38) Да щасссс... Jan 18 2014, 08:05   Herz Спасибо большое, есть что покурить.
Цитата(_Pasha... Jan 18 2014, 08:54    _Pasha Цитата(Herz @ Jan 18 2014, 12:54) Ну, это... Jan 18 2014, 09:02     SM Цитата(_Pasha @ Jan 18 2014, 13:02) что m... Jan 18 2014, 09:07     Herz Цитата(_Pasha @ Jan 18 2014, 11:02) Ага, ... Jan 18 2014, 09:16 _Pasha Кодu8 rnd8(u8 min, u8 max)
{
static u16... Jan 18 2014, 07:30 Herz Странно, но вот у меня такая функция:
Кодunsigned... Jan 18 2014, 10:55 SM Я допустил описку, сорри... Писал прямо в форум...... Jan 18 2014, 11:07 Herz Семён Семёныч!
Да, теперь работает отлично.... Jan 18 2014, 11:13 SM Цитата(Herz @ Jan 18 2014, 15:13) Кстати,... Jan 18 2014, 11:16  Herz Цитата(SM @ Jan 18 2014, 13:16) По ANSI э... Jan 18 2014, 11:22   SM Цитата(Herz @ Jan 18 2014, 15:22) Нет, я ... Jan 18 2014, 11:30 Herz ОК, я понял. То есть и у TSerg смысла в явном при... Jan 18 2014, 11:40 SM Цитата(Herz @ Jan 18 2014, 15:40) То есть... Jan 18 2014, 11:42  Fat Robot Не нужно вам никакого деления и остатка от деления... Jan 18 2014, 14:15   SM Цитата(Fat Robot @ Jan 18 2014, 18:15) од... Jan 18 2014, 20:42 Victor® Цитата(Herz @ Jan 17 2014, 23:13) Предпол... Jan 18 2014, 21:12 Herz Благодарю Вас, теперь ясно. Jan 19 2014, 06:58 TSerg Использование чисто арифметических методов приведе... Jan 19 2014, 13:24 SM Цитата(TSerg @ Jan 19 2014, 17:24) Вместо... Jan 19 2014, 14:40  TSerg Цитата(SM @ Jan 19 2014, 18:40) мои глюки... Jan 19 2014, 15:51 Herz Цитата(TSerg @ Jan 19 2014, 15:24) Исполь... Jan 19 2014, 22:06  SM Цитата(Herz @ Jan 20 2014, 02:06) Мне каж... Jan 20 2014, 08:24 Herz Цитата(TSerg @ Jan 19 2014, 15:24) Лучше ... Jan 20 2014, 13:01 TSerg Сильно извиняюсь.. слегка забегаю в Инет, принимая... Jan 20 2014, 13:23 Herz Цитата(TSerg @ Jan 20 2014, 15:23) Сильно... Jan 20 2014, 13:25  Tanya Цитата(Herz @ Jan 20 2014, 17:25)
А поче... Jan 20 2014, 13:32   Herz Цитата(Tanya @ Jan 20 2014, 15:32) А поче... Jan 20 2014, 13:40    Tanya Цитата(Herz @ Jan 20 2014, 17:40) МК уже ... Jan 20 2014, 13:48     Herz Цитата(Tanya @ Jan 20 2014, 15:48) И лишн... Jan 20 2014, 17:12 TSerg Спасибо за поздравление, Herz!
Однако нам не ... Jan 20 2014, 20:14 SM Кстати, на сколько я помню, для любого линейно-кон... Jan 20 2014, 20:42 TSerg Ну, так я и без претензий - просто сделал попытку ... Jan 20 2014, 20:53 SM Да и я без претензий... просто сделал попытку мате... Jan 20 2014, 20:55 TSerg Цитата(SM @ Jan 21 2014, 00:55) Вот у M-п... Jan 20 2014, 21:04 Herz Цитата(TSerg @ Jan 20 2014, 22:14) Поэтом... Jan 21 2014, 07:12 TSerg ЦитатаОчень Вам признателен.
Да не за, что - гости... Jan 21 2014, 07:41 ARV для задач типа случайного мигания светодиодом, т.е... Jan 22 2014, 06:04
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|