Например TDA7294

Форум РадиоКот • Просмотр темы - Функция RAND()
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Чт янв 01, 2026 06:49:23

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Функция RAND()
СообщениеДобавлено: Ср июн 30, 2021 15:51:21 
Родился

Карма: 2
Рейтинг сообщений: 2
Зарегистрирован: Вс фев 09, 2014 13:25:40
Сообщений: 15
Рейтинг сообщения: 0
Среда MPLAB X IDE V5.15, XC8. Как-то раньше не замечал, а сейчас столкнулся с непоняткой. Вызываю встроенную функцию rand() для получения чисел нужного диапазона, например a=rand()%4+1 . Так вот если по модулю числа 2,4,8,16,32 и .т.д - всё отрабатывает нормально, если другие числа, то кроме чисел из нужного диапазона появляются числа "из концовки диапазона" , т.е. если, например байт как в данном случае, то это 253,254,255... Менял типы данных, изменял RAND_MAX в stdlib.h - всё равно ерунда..
Код:
for(int i=0;i<50;i++)     int r =rand()%4;

Изображение

Код:
for(int i=0;i<50;i++)     int r =rand()%5;

Изображение

Подскажите, что не так делаю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Функция RAND()
СообщениеДобавлено: Чт июл 01, 2021 01:33:53 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4599
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
alfik777 писал(а):
Код:
for(int i=0;i<50;i++)     int r =rand()%5;
А где вывод на терминал ? Может там косяк ?
Слабо верится, что компилятор глючно вычисляет остаток от деления.

Добавлено after 11 minutes 20 seconds:
СпойлерИзображение

Вложение:
2021-07-01_01-31-40.png [90.72 KiB]
Скачиваний: 138


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Функция RAND()
СообщениеДобавлено: Чт июл 01, 2021 08:29:22 
Родился

Карма: 2
Рейтинг сообщений: 2
Зарегистрирован: Вс фев 09, 2014 13:25:40
Сообщений: 15
Рейтинг сообщения: 0
Вывод в терминал просто не показал в коде, там все нормально. Я докопался до истины - может кому-то пригодится. Проблема оказалась в некорректной работе компилятора в стандарте C99. После установки С90 функция rand() стала нормально отрабатывать, правда появилось куча варнингов в программе, ведь стандарт C - C99 по умолчанию и всегда всё писалось под этот стандарт. Выкрутился так - стандарт оставил С99, а библиотеки линкера подключил от С90 (это всё можно выбрать в глобальных опциях проекта).


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y