Задать вопрос
Punk_Joker
@Punk_Joker
Software Engineer в ВО Овен

Генерация дробного числа с заданной точностью на C++

Для реализации поиска экстремума функции методом Монте-Карло необходим генератор случайных дробных чисел желательно, чтобы была возможность задавать количество цифр после запятой. Вполне подходит вариант от целых до тысячной, но на С++ пишу не так уж и долго, работу сделать необходимо срочно. Не подскажите, как его реализовать?

UPD: Забыл уточнить, необходимо получить дробное число в заданном диапазоне.
  • Вопрос задан
  • 22837 просмотров
Подписаться 4 Средний 6 комментариев
Пригласить эксперта
Ответы на вопрос 2
Teivaz
@Teivaz
Самый простой вариант

#include <stdlib.h>

double GetNormalizedRandomNumber(int digits)
{
    double precision = pow(10, digits);
    assert(precision < RAND_MAX); // Precision is too high.
    double ret = rand() % precision;
    ret /= precision;
    return ret;
}
Ответ написан
Комментировать
Компьютеру неудобно работать с числами с разной точностью. У него есть аппаратно реализованные float и double, которые работают быстро. Соответсвенно все решения, которые вам тут предлагают сводятся к получению случайного числа с большой точностью и загрубления его до указанной вами. У меня есть сомнение, что для метода Монте-Карло это загрубление вообще нужно.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы