Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы

Функция random

Непрочитано 27.02.2014, 00:39  
eddy
Почётный гражданин KAZUS.RUN
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Помощь молодому пацану, кто чем может >:<)=

Сообщение от @ndre Посмотреть сообщение
Может кто подскажет как решить?

Спасибо.
Если пофиг на то, что будет повторяемость, бери стандартный алгоритм генерирования rand() (в педивикии найдешь, какое число нужно к первоначальному прибавлять в зависимости от желаемой длины числа в байтах).
Если не пофиг, но "достоверной случайности" не надо, можешь фликкер-шум какой-нибудь усиливать, снимать АЦП и использовать для srand.

Я когда-то (еще в школе когда учился, ходил на УПК по радиоэлектронике) делал какую-то элементарную фигнюшку: что-то вроде транзистора, к базе которого подключалась металлическая пластинка. Дотронешься — через транзистор течет какой-то ток, который после усиления можно использовать для чего-нибудь (у меня, кажись, использовалось для генерирования звукового сигнала случайной продолжительности, а ты можешь на АЦП подать и инициализировать srand() ).

А может даже тупо шума с открытого входа АЦП хватит: поднакопить его немножко, да проинициализировать алгебраический ГСЧ.
Реклама:
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
eddy вне форума  
Сказали "Спасибо" eddy
@ndre (27.02.2014)
Непрочитано 27.02.2014, 12:47  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Функция random

думаю если несколько рандомов запускать по разным таймерам, а потом суммировать это всё в одну переменную то получиться наверно что-то подобное "не повторяемое". Если тип int то положительных 32767 значений - значит каждые 32 тысячи будет повторяемость точно )) Да, и запуск таймеров тех теж на рандом повесить. Чтоб не мудрить с дорожками АЦП и т.д. Как вариант...
miwutka вне форума  
Непрочитано 27.02.2014, 12:50  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Функция random

Сообщение от ut1wpr Посмотреть сообщение
И имеешь удовольствие при каждом запуске программы иметь абсолютно одинаковые последовательности повторений. Надо бы еще кое-чего сделать..
Вроде в хелпе написано что srand имеет не повторяемые значения. Незнаю, не буду утверждать. Я бы повесил счетчик для проверки его. 32000 генераций рандомов, писать их в массив и проверять. Много памяти, долго но раз проверить и успокоиться ))

Последний раз редактировалось miwutka; 27.02.2014 в 12:51. Причина: если оно из 32000 генераций повториться раз 5-20 и это устроит то вперед.
miwutka вне форума  
Непрочитано 27.02.2014, 13:14  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Функция random

Инициализация генератора то есть?

А то через stdlib это вот так делается;
/* prints a random number in the range 0 to 99 */
int main(void)
{
randomize();
printf("Random number in the 0-99 range: %d\n", random (100));
return 0;
}

На худой конец можно можно взять текущее время (или содержимое ОЗУ почитать, по включению питания оно то будет случайным) , и соорудить из полученных данных некое число N;
Далее while(N--)random();

Вот и будет псевдослучайное начало генератора.
Boba_spb вне форума  
Непрочитано 27.02.2014, 13:22  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Функция random

Сообщение от miwutka Посмотреть сообщение
Я бы повесил счетчик для проверки его. 32000 генераций рандомов, писать их в массив и проверять. Много памяти, долго но раз проверить и успокоиться ))
Проверять на что и чем?
Boba_spb вне форума  
Непрочитано 27.02.2014, 15:14  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Функция random

Сообщение от Boba_spb Посмотреть сообщение
Проверять на что и чем?
чем, чем - микрухой )) а на что - на то, на сколько они случайны и повторяемы.
miwutka вне форума  
Непрочитано 27.02.2014, 15:23  
mimuh64
Прописка
 
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
mimuh64 на пути к лучшему
По умолчанию Re: Функция random

Пример использования функций rand(); и srand();
Значение функции rand(); присваивается переменной FCV_RND = rand(); и выводится на ЖКИ, смещение задается srand(TCNT0);
Это без всяких заморочек, вместо значений TCNT0 можно использовать любой "шум"... который автору на данный момент не нужен...
Вложения:
Тип файла: rar RND.rar (50.0 Кб, 44 просмотров)
mimuh64 вне форума  
Непрочитано 27.02.2014, 15:39  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Функция random

Сообщение от miwutka Посмотреть сообщение
чем, чем - микрухой )) а на что - на то, на сколько они случайны и повторяемы.
И где ж такую микруху достать, которая так легко определяет насколько "случайны" последовательности.

Видать эт спецпроцессор для решения задач теории веорятностей.
Boba_spb вне форума  
Непрочитано 27.02.2014, 21:48  
@ndre
Частый гость
 
Регистрация: 20.01.2014
Сообщений: 17
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
@ndre на пути к лучшему
По умолчанию Re: Функция random

ВСЕМ СПАСИБО!
Изучаю вопрос.
@ndre вне форума  
Непрочитано 27.02.2014, 21:54  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Функция random

Сообщение от Boba_spb Посмотреть сообщение
Видать эт спецпроцессор для решения задач теории веорятностей.
Можно обработать на большом брате. Накидать ему через СОМ - и пускай трудится.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция eeprom_read_block для attiny13a zus_ev Embedd С 14 30.08.2013 14:53
Функция if на ассемблере для PIC val_ka PIC 26 15.08.2013 20:40
scmRTOS функция Sleep() alberio Микроконтроллеры, АЦП, память и т.д 2 04.07.2011 12:15
Функция для расчета CRC maxNTF Микроконтроллеры, АЦП, память и т.д 3 30.12.2009 10:16
random C++ Boris_Britva Микроконтроллеры, АЦП, память и т.д 2 30.07.2008 12:15


Часовой пояс GMT +4, время: 22:25.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.