Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mansu
0 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 240
#1

Задать рандом в диапазоне с шагом - C++

06.09.2014, 10:07. Просмотров 849. Ответов 7
Метки нет (Все метки)

У меня есть диапазон и шаг [smin..smax] и шаг de(Я их считаю в программе). Помогите задать рандом.
Я пробовал вот так:
C++
1
2
3
4
5
6
double M[100];
for (i = 0; i<=lab1.n; i++){
 M[i]= smin + rand() % (smax -smin);
}
for (i = 0; i<=lab1.n; i++){
printf("%.2f\n",M[i]);}
Но тут без шага и оно не работает((( Помогите пожалуйста. Зарание спасибо.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.09.2014, 10:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задать рандом в диапазоне с шагом (C++):

Как задать рандом в диапазоне? - C++
Сделал переменную rnd = 7 + rand() % 10 По идее должны генерироваться числа от 7 до 10, но генерирует числа и больше 10 В начала кода...

Рандом с шагом - C++
Всем доброго времени суток. Пытаюсь сделать программу, которая выдаёт рандомные числа, с помощью rand(), c определенным шагом. Изучаю язык...

Продвинутый рандом (возможность задать рандомное число в нескольких диапазонах) - C++
закончил с лабами и от скуки написал продвинутую версию рандома :D просто короче мне понадобилось чтобы можно было задать рандомное число в...

При помощи оператора WHILE протабулировать функцию в диапазоне от 0.5 до 5 с шагом 0.1 - C++
Помогите пожалуйста!!! Разработать алгоритмы и программы решения задач: a) при помощи оператора WHILE протабулировать функцию в...

Как подставить в формулу числа в диапазоне от 0 до 0,1 с шагом 0,0001? - C++
Здравствуйте. Подскажите как написать простую задачу. Имеется формула double x=0; double y=0.0001//шаг. Всего 1000 ...

Вывести на экран таблицу значений функции в заданном диапазоне с определённым шагом - C++
Напишите программу, которая выводит на экран таблицу значений функции у = 2х2 -5х-8 в диапазоне от -4 до 4. Шаг изменения аргумента 0,5.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Donnerwetter
40 / 40 / 12
Регистрация: 04.02.2014
Сообщений: 144
06.09.2014, 10:14 #2
Вот пара примеров, по этому принципу делайте для своего диапазона и шага

3, 5, 7, 9, 11
C++
1
3 + 2 * (rand() % 5)
6, 10, 14, 18, 22
C++
1
6 + 4 * (rand() % 5)
1
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
06.09.2014, 12:05 #3
я пользуюсь вот таким рандомом

C++
1
2
3
4
5
6
7
8
9
10
int random(int min, int max)
{
    static bool flag;
    if (!flag)
    {
        srand(time(NULL));
        flag = true;
    }
    return min + rand() % (max - min);
}
а что вы подразумеваете под шагом?
1
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.09.2014, 12:15 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от GetHelp Посмотреть сообщение
а что вы подразумеваете под шагом?
Судя по всему ТСу нужны вещественные случайные числа, и под шагом понимается минимально возможная разница м/у разными случайными числами. Для случая целых - это 1.

Если мое предположение верно, то ядро решения может выглядеть так:
C++
1
2
3
smin /= step;
smax /= step;
return (smin + rand() % (smax -smin)) * step;
1
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
06.09.2014, 12:20 #5
А почему просто не воспользоваться стандартным вариантом
(случайное число в диапазоне [smin,smax] )?
C++
1
return smin + rand() /double(RAND_MAX)* (smax -smin);
1
Mansu
0 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 240
06.09.2014, 19:46  [ТС] #6
Извините, но тут выдаёт ошибку(
C++
1
2
3
smin /= step;
smax /= step;
[COLOR="Red"]return (smin + rand() % (smax -smin)) * step;[/COLOR]
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.09.2014, 19:58 #7
Цитата Сообщение от Mansu Посмотреть сообщение
выдаёт ошибку
Ждём ясновидящего.
0
Mansu
0 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 240
10.09.2014, 20:49  [ТС] #8
Это правильно?:
C++
1
M[i]=(rand() %int((smax-smin)/de +1))*de + smin;
//[smin....smax] с шагом de.
P.S. делал по аналогии.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2014, 20:49
Привет! Вот еще темы с ответами:

Цикл: Вывести на экран таблицу значений удвоенных косинусов в диапазоне от a до b с шагом h - C++
Доброго времени суток, уважаемые Форумчане! Вынуждена просить Вашей помощи в решении нескольких задач, так как сама на данный момент не...

Вывести на экран таблицу значений указанной функции в заданном диапазоне с заданным шагом - C++
Кто в курсе как решается задача на С++. Именно через цикл &quot;while&quot;. Напишите программу, которая выводит на экран таблицу значений функции...

Задать случайно массив от -20 до 50 с шагом 0.5, выводить является ли сумма делимой на 2 без остатка - C++
помогите решить. задать случайно массив от -20 до 50 с шагом 0.5, выводить является ли сумма делимой на 2 без остатка

Провести табулирование функции Y=SIN X на отрезке [a,b] с шагом 0,2. Начало и конец отрезка задать с клавиатур - C++
3. Провести табулирование функции Y=SIN X на отрезке с шагом 0,2. Начало и конец отрезка задать с клавиатуры. При этом программу оформить...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.09.2014, 20:49
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru