Заполнение вектора случайными 15 числами от 22 до 23 ( 22< x < 23)
Код написал вроде бы правильно,но с диапазоном что-то не то,должны выводиться числа от 22.0 до 23.0 например 22.3 , 22.4.
#include <iostream>
#include <Windows.h>
#include <vector>
#include <algorithm>
#include <ctime>
#include <cstdlib>
using namespace std;
int main() {
srand(time(NULL));
vector<float> Elements;
for (float i = 0; i < 15; i++)
{
float Elements = (rand() %23 +22);
cout << Elements;
cout << endl;
}
system("pause");
return 0;
}
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
надо случайное число от 0 до 1 сформировать, например так:
22 + (float)rand() / RAND_MAX
если не важна максимальная ступенчатость (которая по сути RAND_MAX задается), то можно можно и так
22 + (rand() % 100) / 99.0
Код написал вроде бы правильно
нет, не правильно
(rand() %23 +22);
будет выводить от 22 + 0 до 22 + 22
P.S.
ну и самое главное - раз пишете на c++ и используете stl, то почему бы не обратить внимание и на библиотеку случайных чисел, которая удобный интерфейс вам предоставляет для вашей задачи
#include <random>
std::random_device device;
std::mt19937 generator(device());
std::uniform_real_distribution<float> distr(22.0, 23.0);
for (int n = 0; n < 15; ++n) {
std::cout << distr(generator) << std::endl;
}