Цитата(IgorKossak @ Jan 13 2008, 13:50)

Функция int rand(void) возвращает целое число в диапазоне [0, RAND_MAX].
...
Пример лучше переписать так:
Код
#define RAND_MAX 2000
for (y=0;y<3;y++)
{
srand(5); // любое число не = 1
Current[y] = (float)rand() / 1000.0; // если это массив значений float
}
А-а-а!!! У-у-у!!!

Нет, ну я не могу сдержаться, чесслово.
А сделать
Код
#define LONG_MAX 7
#define LONG_MIN -8
и таким образом ограничить диапазон значений long никто не пробовал? Рекомендую!
А если вдруг я ещё не все комнаты смеха посетил и где-то есть компилятор, настолько не соответствующий стандарту, что переопределение RAND_MAX в пользовательском коде вот так просто влияет на поведение библиотечной rand() - адресок сбросьте, а!
-=Женек=-, думаю, для светодиодов каких-то особых качеств генератора не нужно и этого хватит с головой (если вообще использовать библиотечный rand() )
Код
#include <stdlib.h>
unsigned char led_rand()
{
unsigned char r;
do {
r = rand() & 0x03;
} while( r == 3); // тута ошибочка была, исправлено
return r;
}
srand() вызывать вообще не обязательно. Ну если хочется, чтобы каждый раз при включении не повторялась 1:1 последовательность (всё равно когда-то выйдет на цикл, но хоть чтобы не стартовало каждый раз с разного места) - то надо делать srand() с каким-то "внешне-случайным" аргументом - содержимым какого-то свободно-бегущего атймера в момент нажатия пользователем какой-то кнопки, ещё что-то такое найти.