@naivee

Генератор double в определённом диапазоне?

float crash = MinValue + static_cast<float>(rand()) * static_cast<float>(MaxValue - MinValue) / RAND_MAX;
return crash;


Мне нужно чтобы в генерировалось double/float число в диапазоне от 1.00 до 1.19? Как можно это реализовать на плюсах?
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
@pfemidi
Тут могло бы быть краткое описание меня
[pfemidi@pfemidi tmp]$ cat foobar.cpp
#include <iostream>
#include <random>
#include <chrono>

int main() {
    const double from = 1.0;
    const double to = 1.19;
    std::default_random_engine engine(
        std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()));
    std::uniform_real_distribution<> distr(from, to);
    auto gen_number = [&engine, &distr] () { return distr(engine); };
    std::cout << gen_number() << std::endl;
}
[pfemidi@pfemidi tmp]$ g++ foobar.cpp -o foobar
pfemidi@pfemidi tmp]$ ./foobar 
1.07033
[pfemidi@pfemidi tmp]$ ./foobar 
1.12032
[pfemidi@pfemidi tmp]$ ./foobar 
1.14531
[pfemidi@pfemidi tmp]$ ./foobar 
1.1703
[pfemidi@pfemidi tmp]$ ./foobar 
1.00529
[pfemidi@pfemidi tmp]$ ./foobar 
1.03029
[pfemidi@pfemidi tmp]$ ./foobar 
1.00107
[pfemidi@pfemidi tmp]$ ./foobar 
1.02606
[pfemidi@pfemidi tmp]$
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы