так как rand() возврашает целое число в диапазане от 0 до 0х7fff, при прямом переводе его из signed в unsigned
старший бит случайного числа будет всегда равным нулю, что не есть хорошо для случайной последовательности.
Используя данную функцию :
(((unsigned)rand())<<1)+rand();
вместо rand() Вы сможете получить заполнение этого пустого старшего бита. То есть
Код
unsigned int Ваш_rand(void)
{
return (((unsigned)rand())<<1)+ rand();
}
буфдет генерировать unsigned integer от 0 до 0хffff.
"srand - функция инициализации (задания стартового значения) генератора псевдослучайной последовательности."
так как генератор случайной последовательности невозможно сделать без элемента случайности) (который отсутствует в стандарте языка C ), случайную последовательность получают путем приближения допустим полиномиальными функциями. Посредством использования srand() (с Вашим уникальным значением аргумента) Вы добьетесь того что Ваша последовательность будет отличаться от последовательности функции srand() на другой программе.