как правильно указать диапазон генерации для (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)

→ Ссылка