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

 
 
> Какой тип данных возвращает rand() в WinAVR?
-=Женек=-
сообщение Sep 17 2006, 17:46
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 559
Регистрация: 6-09-06
Пользователь №: 20 131



Какой тип данных возвращает rand() в WinAVR?
int? unsigned int?

Я поэкспериментировал и мне кажется, что диапазон значений - от 0 до 32768. Я прав?

Мне бы получить 16-ти битное случайное число. Как?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_artem_
сообщение Sep 17 2006, 19:58
Сообщение #2


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



так как 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() на другой программе.


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 13:30
Рейтинг@Mail.ru


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