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

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

Восстановить пароль Регистрация
 
Mansu
0 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 236
06.09.2014, 10:07     Задать рандом в диапазоне с шагом #1
У меня есть диапазон и шаг [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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.09.2014, 10:07     Задать рандом в диапазоне с шагом
Посмотрите здесь:

рандом C++
рандом C++
Рандом с шагом C++
Задать случайно массив от -20 до 50 с шагом 0.5, выводить является ли сумма делимой на 2 без остатка C++
C++ Рандом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
-8 / 60 / 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
:)
Эксперт C++
4378 / 3221 / 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
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 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
Сообщений: 236
06.09.2014, 19:46  [ТС]     Задать рандом в диапазоне с шагом #6
Извините, но тут выдаёт ошибку(
C++
1
2
3
smin /= step;
smax /= step;
[COLOR="Red"]return (smin + rand() % (smax -smin)) * step;[/COLOR]
Tulosba
:)
Эксперт C++
4378 / 3221 / 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++

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

Или воспользуйтесь поиском по форуму:
Mansu
0 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 236
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     Задать рандом в диапазоне с шагом
Ответ Создать тему
Опции темы

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