[an error occurred while processing this directive] [an error occurred while processing this directive]
Можешь взять random из linux'а или FreeBSD(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Papa Innokenty IV 28 февраля 2002 г. 11:12
В ответ на: Как сделать нормальный генератор псевдослучайных чисел ? Может есть сурцы (С, асм avr/51/86) ? отправлено DmitryRyvkin 28 февраля 2002 г. 09:18

Очень хороший генератор. Удовлетворяет критериям от хи-квадрат до максимума-t, т.е. практически всем.
Позволяет получить по-настоящему случайное число.

Конечно по ресурсам немного велик, т.к. для получения случайного числа использует CRC MD-5, которая на AVR занимает 10 кб.

Если что-то попроще, то можешь взять стандартную ф-ю Си - rand.
Можитель, модуль и приращение можешь выбрать на свой вкус.

/* (в модуле stdlib.h) */
#define RAND_MAX 32767

/* "пример" от комитета ANSI-C */
unsigned long next=1;

int rand(void) {
next=next*1103515245+12345;
return((unsigned int)(next/65536)%32768);
}

void srand(unsigned int seed) {
next=seed;
}

ЗЫ: Все детально описано во 2-м томе Кнута.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru