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

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

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

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

06.09.2014, 10:07. Просмотров 778. Ответов 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]);}
Но тут без шага и оно не работает((( Помогите пожалуйста. Зарание спасибо.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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)
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);
}
а что вы подразумеваете под шагом?
Tulosba
:)
Эксперт С++
4390 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.09.2014, 12:15     Задать рандом в диапазоне с шагом #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от GetHelp Посмотреть сообщение
а что вы подразумеваете под шагом?
Судя по всему ТСу нужны вещественные случайные числа, и под шагом понимается минимально возможная разница м/у разными случайными числами. Для случая целых - это 1.

Если мое предположение верно, то ядро решения может выглядеть так:
C++
1
2
3
smin /= step;
smax /= step;
return (smin + rand() % (smax -smin)) * step;
zss
Модератор
Эксперт С++
6245 / 5848 / 1891
Регистрация: 18.12.2011
Сообщений: 14,982
Завершенные тесты: 1
06.09.2014, 12:20     Задать рандом в диапазоне с шагом #5
А почему просто не воспользоваться стандартным вариантом
(случайное число в диапазоне [smin,smax] )?
C++
1
return smin + rand() /double(RAND_MAX)* (smax -smin);
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]
Tulosba
:)
Эксперт С++
4390 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.09.2014, 19:58     Задать рандом в диапазоне с шагом #7
Цитата Сообщение от Mansu Посмотреть сообщение
выдаёт ошибку
Ждём ясновидящего.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2014, 20:49     Задать рандом в диапазоне с шагом
Еще ссылки по теме:

Продвинутый рандом (возможность задать рандомное число в нескольких диапазонах) C++
Вывести на экран таблицу значений функции в заданном диапазоне с определённым шагом C++
Как задать рандом в диапазоне? C++
Цикл: Вывести на экран таблицу значений удвоенных косинусов в диапазоне от a до b с шагом h C++
C++ Провести табулирование функции Y=SIN X на отрезке [a,b] с шагом 0,2. Начало и конец отрезка задать с клавиатур

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

Или воспользуйтесь поиском по форуму:
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. делал по аналогии.
Yandex
Объявления
10.09.2014, 20:49     Задать рандом в диапазоне с шагом
Ответ Создать тему
Опции темы

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