как правильно указать диапазон генерации для (0;1) с тремя знаками после запятой?
как правильно указать диапазон генерации для (0;1) с тремя знаками после запятой используя функцию rand()?
Ответы (2 шт):
Автор решения: Harry
→ Ссылка
Если я верно понял, что вам нужно -
(rand()%1000)/1000.0
Еще вариант - округлять до трех знаков, типа
round(rand()*1000.0/RAND_MAX)/1000.0
Автор решения: Andrej Levkovitch
→ Ссылка
А почему бы вам не использовать библиотеку random, которая доступна с 11 стандарта? К примеру, если вам нужно генерировать числа в диапазоне от 0 до 1 это будет выглядеть примерно так:
#include <cstdlib>
#include <iostream>
#include <random>
int main() {
std::random_device rd;
std::mt19937 generator{rd()};
std::uniform_real_distribution<float> dist{0, 1};
for (int i = 0; i < 10; ++i) {
std::cout << dist(generator) << std::endl;
}
return EXIT_SUCCESS;
}
Ну а для того, чтобы установить вывод именно с тремя знаками можно воспользоваться iomanip и установть std::setprecision(3)