Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2011, 08:56   #1
Студент_ка
Новичок
Джуниор
 
Регистрация: 23.06.2011
Сообщений: 6
По умолчанию Диапазон генератора чисел

Почему у генератора вещественных чисел диапазон от -99,99 до 99,99?
rand()%100*(rand()%2==1?-1:1)

Очень надо, помогите пожалуйста

Последний раз редактировалось Студент_ка; 23.06.2011 в 09:14.
Студент_ка вне форума Ответить с цитированием
Старый 23.06.2011, 09:15   #2
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Потому что формула такая. У функции rand() диапазон от нуля до RAND_MAX.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 23.06.2011, 09:36   #3
Студент_ка
Новичок
Джуниор
 
Регистрация: 23.06.2011
Сообщений: 6
По умолчанию

а напишите пожалуйста что означает в этой формуле каждая переменная и каждый знак
(rand()%2==1?-1:1)
Студент_ка вне форума Ответить с цитированием
Старый 23.06.2011, 09:44   #4
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

rand() - функция, возвращающая псевдослучайное число в диапазоне от нуля до RAND_MAX;
% - операция нахождения остатка от целочисленного деления. x%2 означает остаток деления x на 2 (может быть равен либо 1, либо 0);
?: - условная операция. Запись z?x:y означает, что если z - истина, то результат операции - x, в противном случае результат операции - y;

Таким образом указанная вами формула означает, что вычисляется остаток от деления на два у случайного числа, и если этот остаток равен единице, то результатом будет -1, в противном случае результатом будет 1. Того же результата можно добиться более простой формулой:
(rand()%2?1:-1)
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 23.06.2011, 09:56   #5
Студент_ка
Новичок
Джуниор
 
Регистрация: 23.06.2011
Сообщений: 6
По умолчанию

Спасибо большое!!!
Студент_ка вне форума Ответить с цитированием
Старый 23.06.2011, 12:29   #6
Студент_ка
Новичок
Джуниор
 
Регистрация: 23.06.2011
Сообщений: 6
По умолчанию

А что значит (rаnd()%100)/100?
Студент_ка вне форума Ответить с цитированием
Старый 23.06.2011, 12:33   #7
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
Сообщение от Студент_ка Посмотреть сообщение
А что значит (rаnd()%100)/100?
Это значит, что всегда будет равно 0
Если процессор любое целое число от 0 до 99 разделит на 100, то всегда получится 0 !
An1ka вне форума Ответить с цитированием
Старый 23.06.2011, 12:49   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Если процессор любое целое число от 0 до 99 разделит на 100, то всегда получится 0 !
чего это?
50 / 100 у Вас получается ноль? Проверьте на калькуляторе, Вы будете удивлены, помимо целых чисел бывают ещё и дробные (вещественные) числа!


А вот кто мне объяснит, где в заданном в первом посте примере задаются пределы
(ну тот самый вышеупомянутый RAND_MAX) ?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.06.2011, 12:56   #9
Студент_ка
Новичок
Джуниор
 
Регистрация: 23.06.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
чего это?
50 / 100 у Вас получается ноль? Проверьте на калькуляторе, Вы будете удивлены, помимо целых чисел бывают ещё и дробные (вещественные) числа!
ну а какой тогда правильный ответ?
Студент_ка вне форума Ответить с цитированием
Старый 23.06.2011, 13:08   #10
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
чего это?
50 / 100 у Вас получается ноль? Проверьте на калькуляторе, Вы будете удивлены, помимо целых чисел бывают ещё и дробные (вещественные) числа!
А причем тут вещественные числа, если здесь целые числа и процессор целые числа так считает ! Проверьте в программе с целыми числами операции =) И вы будете удивлены не меньше !
Цитата:
Сообщение от Студент_ка Посмотреть сообщение
ну а какой тогда правильный ответ?
Правильный ответ всегда 0 ! rand() возвращает целые числа и здесь операции над целыми числами.
An1ka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
диапазон чисел Che Guevara Microsoft Office Excel 2 07.01.2011 15:32
Определение параметров генератора случайных чисел (ЛКГ) ak87 Общие вопросы Delphi 3 07.02.2010 14:50
С++ Создать класс содержащий 3х-мерный массив int'ов, заполнять с помощью генератора случайных чисел vipER Помощь студентам 1 22.09.2007 22:08
Как указать диапазон чисел? Inbox Общие вопросы Delphi 2 29.06.2007 01:21