Заполнение вектора случайными 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;
}
→ Ссылка