rand max



Автор Ўра Осипов задал вопрос в разделе Другие языки и технологии

c++ рандомное Double число и получил лучший ответ

Ответ от ?рднаскелА[гуру]
RAND_MAX - максимальное возвращаемое значение функции rand
(он задан в файле stdlib.h, который подключен к твоей программе, да, типа переменной)
так вот (double)rand()/(double) RAND_MAX - это случайное double число от 0 до 1
если это число умножим на b - a, то получим случайное double число от 0 до (b - a),
а если к этому еще прибавим а, то получим случайное double число от a до b, что нам и требуется
а вторым способом можно получить только целое число, т. к. % - остаток от деления может быть только целым

Ответ от Ўрий-17[гуру]
Дробное случайное число получается либо соответствующими генераторами, либо на основе целочисленных генераторов. Последнее лучше в плане хороших вероятностных характеристик. Но проблема в целочисленных генераторах - это невысокая разрядность целочисленной мантиссы. Следовательно вещественные значения не сильно будут отличаться от целочисленных по способу появления. Дело в том, что в ограниченном диапазоне вероятность повторного появления вещественного числа при равномерном законе распределения, равна нулю. А для целых чисел - отлична от нуля. Поэтому, чтобы получить случайное число типа double, нужно определиться с его форматом. Его двоичная нормированная мантисса имеет 53 разряда. Поэтому и генератор должен иметь в генерируемых числах такую же разрядность. С порядком ещё сложнее, так как там не всё так просто будет с равномерностью. Продумайте задачу, точно ли нужно Вам генерировать случайные числа данного типа!

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: c++ рандомное Double число
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*