реклама на сайте
подробности

 
 
> Простой ГСП на Си
Herz
сообщение Jan 17 2014, 19:13
Сообщение #1


Гуру
******

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



Предположим, требуется моргать светодиодом с псевдослучайным интервалом от 2 до 30 секунд.
Посоветуйте простую функцию на Си для генерации целых чисел в таком малом диапазоне. Пусть от 1 до 255 максимум.
Функция rand() из библиотеки HT-PICC тяжеловата как-то...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Guest_TSerg_*
сообщение Jan 19 2014, 13:24
Сообщение #2





Guests






Использование чисто арифметических методов приведения диапазона ГСП к малым значениям может привести к весьма плачевным результатам в отношении качества их статистических свойств.

Лучше попробовать использование класса ГСП сразу генерирующего псевдо-случайные числа в желаемом амплитудном диапазоне (одновременно, к сожалению будет ограничен и период), к примеру класс LCG-генераторов:
Si = ( A*Sii + B ) mod M

К примеру, при M=83, A=2, B=0 получаем простой ГСП с периодом P=M-1=82, амплитудами 1..82:

Sii = 1..82; // Например Sii := 1;
---
Si := (Sii << 1) mod M;
Sii := Si;

Вместо mod M:
while Si<M do Si -= M;

или для данного A=2 даже:
if Si > M then Si -= M;

P.S.
Немногие удачные сочетания (A;M) c P=M-1:
(5;22), (2,29), ..., (6;41), .., (5;167), (2,5,6,8..;227)...
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 19 2014, 14:40
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(TSerg @ Jan 19 2014, 17:24) *
Вместо mod M:
while Si<M do Si -= M;


мои глюки повторяем sm.gif

while Si>=M do Si -= M;
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Jan 19 2014, 15:51
Сообщение #4





Guests






Цитата(SM @ Jan 19 2014, 18:40) *
мои глюки повторяем sm.gif

while Si>=M do Si -= M;


Ну да, очепытка, т.к. все не читал sm.gif
Ниже-то - правильно.

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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   Цитата(Fat Robot @ Jan 18 2014, 16:15) Не...   Jan 18 2014, 22:16
|- - Fat Robot   Объясню предельно просто, не жонглируя терминологи...   Jan 18 2014, 23:55
|- - Tanya   Цитата(Fat Robot @ Jan 19 2014, 03:55) то...   Jan 19 2014, 08:05
- - Herz   Благодарю Вас, теперь ясно.   Jan 19 2014, 06:58
|- - 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


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 20:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01435 секунд с 7
ELECTRONIX ©2004-2016