Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/29: Рейтинг темы: голосов - 29, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 20.09.2014
Сообщений: 310

Случайные числа в диапазоне от -m до +m

27.03.2018, 15:06. Показов 5808. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Пытаюсь сделать рандом от -m до +m(где m обычное число). Выглядит примерно так:
C++
1
2
int m=35;
ab= rand() % (2*m+1) + (-m);
Правильно ли я сделал?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.03.2018, 15:06
Ответы с готовыми решениями:

Случайные числа в определенном диапазоне
Всем доброго времени суток. В книжке наткнулся на упражнение со случайными числами.Если коротко,то задание следующее - написать...

Случайные числа в заданном диапазоне
Подскажите как написать программу, которая генерирует последовательность из N случайных чисел в диапазоне от 1 до 10, выводит эти числа на...

Записать в вектор случайные числа в заданном диапазоне
нужно записать в вектор от 10 до 15 случайных чисел от -10 до 10 сделал вот так #include <iostream> #include <string> ...

22
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
27.03.2018, 15:16
Андей,
C++
1
2
3
4
5
int GetRandomNumber()
{
    std::srand(std::time(nullptr) );
    return -10 + std::rand() % 20;
}
Добавлено через 7 минут
C++
1
2
3
4
5
int GetRandomNumber(int f, int d)
{
    std::srand(std::time(nullptr) );
    return f + std::rand() % (d - f + 1);
}
0
1 / 1 / 1
Регистрация: 20.09.2014
Сообщений: 310
27.03.2018, 15:17  [ТС]
что подразумеваете под f и d?
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
27.03.2018, 15:18
Андей, правильно.
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
27.03.2018, 15:18
Андей, от и до
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <thread>
#include <chrono>
 
int GetRandomNumber(int f, int d)
{
    std::srand(std::time(nullptr) );
    return f + std::rand() % (d - f + 1);
}
 
int main()
{
    for (std::size_t i = 0; i < 30; ++i)
    {
        std::cout << GetRandomNumber(-10, 10) << ' ';
        std::this_thread::sleep_for(std::chrono::seconds(1) );
    }
 
    return 0;
}
1
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
27.03.2018, 17:09
_stanislav, srand нужно вызывать только один раз.
C++
1
2
3
4
5
int GetRandomNumber(int f, int d)
{
    static int fake = (std::srand(std::time(nullptr)), 0); (void)fake;
    //...
}
2
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
27.03.2018, 18:20
Croessmah, правильно я понимаю твой код?
Статическая переменная служит для однократного вызова функции, после инициализируется нулем?
Непонятна вот эта конструкция (void)fake; вроде как привидение переменной к типу void
но типа void же нет, есть только тип void*? и почему это привидение не к чему не присваивается как то так fake = (void)fake;
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
27.03.2018, 18:28
Цитата Сообщение от _stanislav Посмотреть сообщение
Статическая переменная служит для однократного вызова функции, после инициализируется нулем?
угу. "Запятая" вернет 0.
Цитата Сообщение от _stanislav Посмотреть сообщение
(void)fake;
Это способ избежать предупреждения компилятора о неиспользуемой переменной.
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
27.03.2018, 18:34
Цитата Сообщение от Croessmah Посмотреть сообщение
Это способ избежать предупреждения компилятора о неиспользуемой переменной.
почему он работает если типа void нет в языке или есть?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
27.03.2018, 18:57
Цитата Сообщение от _stanislav Посмотреть сообщение
почему он работает если типа void нет в языке или есть?
Тип void - есть. Он незавершенный.
Что касается преобразования в void:
5.2.9 Static cast
...
6. Any expression can be explicitly converted to type cv void, in which case it becomes a discarded-value expression (Clause 5).
...
2
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
28.03.2018, 07:31
Croessmah, а не проще написать вот так

C++
1
2
3
4
5
6
int GetRandomNumber(int f, int d)
{
    static int fake = std::srand(std::time(nullptr) );
    fake = 0;
    //...
}
или твой вариант лучше оптимизируется компилятором.

Добавлено через 22 минуты
или можно использовать вместо (void) (int)
C++
1
2
3
4
5
int GetRandomNumber(int f, int d)
{
    static int fake = (std::srand(std::time(nullptr)), 0); (int)fake;
    //...
}
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
28.03.2018, 15:05
Цитата Сообщение от _stanislav Посмотреть сообщение
static int fake = std::srand(std::time(nullptr) );
srand возвращает void, так что будет ошибка.
Цитата Сообщение от _stanislav Посмотреть сообщение
(int)fake;
Будет предупреждение, что-то типа "statement has no effect".
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
28.03.2018, 15:55
Croessmah, для чего может понадобится подобное привидение (void) кроме хака из твоего примера.
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
28.03.2018, 15:56
_stanislav, это не "хак", а вполне распространенная практика программирования.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
28.03.2018, 17:44
Цитата Сообщение от QuakerRUS Посмотреть сообщение
не "хак"
не стандартный прием, покажи реально полезный пример
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
28.03.2018, 17:51
Цитата Сообщение от _stanislav Посмотреть сообщение
не стандартный прием
Стандартный.
Цитата Сообщение от _stanislav Посмотреть сообщение
покажи реально полезный пример
Вон, целый Q_UNUSED.
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
28.03.2018, 18:20
Да что далеко ходить, пройтись к примеру поиском по стандартным .h файлам в VS, таким как, например, algorithm.h и т.п. Там сотни этих приведений к (void).

Добавлено через 5 минут
functional.h

C++
1
2
3
4
5
// ...
const auto& _Pat = _Data._Get_second();
_DEBUG_RANGE(_Pat.first, _Pat.second);
(void)_Pat;
// ...
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
28.03.2018, 18:48
Цитата Сообщение от _stanislav Посмотреть сообщение
покажи реально полезный пример
Более, чем реальный пример
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
28.03.2018, 18:49
Цитата Сообщение от Kastaneda Посмотреть сообщение
Более, чем реальный пример
Сказано же - реально полезный!
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
28.03.2018, 21:27
Kastaneda, по ссылке выше это (теперь) решается с помощью атрибута [[maybe_unused]].
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.03.2018, 21:27
Помогаю со студенческими работами здесь

Заменить отрицательные числа на случайные в диапазоне в двухмерном массиве
Пользователь вводит массив 3х3. Программа заменяет все отрицательные элементы на случайные числа в диапазоне

Случайные вещественные числа в диапазоне
Есть RandomRange(), но он только для целых чисел, подскажите как организовать что Random выдавал только числа в диапазоне, допустим от 1.89...

Сгенерировать случайные числа в диапазоне от 1 до 20
Задача такова: Нужно написать рендум чисел в диапазоне например от 1 до 20 (не имеет значения). С проверкой, что бы не повторялось число....

Сгенерировать случайные двоичные числа в диапазоне от a до b
Помогите написать программу, даже не знаю с какой стороны к ней подойти, вот задание: Написать функцию, генерирующую случайные двоичные...

Сгенерировать случайные действительные числа в заданном диапазоне
Сгенерировать число равномерно от 0 до 1-это у меня получается: int main() { double a = { 0 }; srand(time(NULL)); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru