Консультация № 72330
23.01.2007, 22:40
0.00 руб.
0 4 4
Здравствуйте эксперты!Вопрос такой:функция rand() возвращает целые значения,а нужно получить
значения от 0.0 до 1.0.Скажите есть ли какой-нибудь способ это добиться? Заранее спасибо.

Обсуждение

Неизвестный
23.01.2007, 23:13
общий
это ответ
Здравствуйте, Hunter20!
Конечно есть!
Ф-ция rand() возвращает целые значение в диапазоне
[0,RAND_MAX], чтобы получать значения из отрезка [0,1] нуно
сделать так

float r;
r=rand();
r/=RAND_MAX;

Удачи!
Неизвестный
24.01.2007, 04:51
общий
это ответ
Здравствуйте, Hunter20!

Какие проблемы, почему бы не разделить 1 на полученное от rand() значение. А чтобы не получить результат вроде 0,000005656, перед этим выполним деление по модулю, на пример на 100 или 1000:

double result;
result = 1/(rand()%100);

Не правда ли просто...
Удачи :)
Неизвестный
24.01.2007, 06:23
общий
это ответ
Здравствуйте, Hunter20!
Набольшие добавления и исправления к ответу эксперта Nightm@re.
Вариант предложенный им всегда возвращает 0, кроме этого есть вероятность ошибки типа "деление на нуль". Так что его вариант надо переписать следующим образом. Обратите внимание на точку после еденицы.

double result;
result = 1./(1+rand()%100);
Неизвестный
24.01.2007, 07:51
общий
это ответ
Здравствуйте, Hunter20!
Это можно сделать примерно так:
int a = rand() * 100 / RAND_MAX;//Получаем целое от 0 до 100
double b = (double)a / 10;//Получаем вещественное от 0 до 10
Форма ответа