Форум программистов, компьютерный форум CyberForum.ru

rand() в С для вещественных чисел - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
chron1c
4 / 4 / 1
Регистрация: 27.12.2009
Сообщений: 34
03.05.2010, 16:26     rand() в С для вещественных чисел #1
Сабж. Как?
Нужен еще и диапазон.
С целыми то понятно: rand()%<max-min+1> + <min>;

Добавлено через 1 час 22 минуты
Вверх
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MikeSoft
Эксперт C++
 Аватар для MikeSoft
3781 / 1765 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
03.05.2010, 16:51     rand() в С для вещественных чисел #2
chron1c, а что вам мешает немножко модифицировать работу rand ?
Самая простая реализация, которая сразу пришла мне в голову:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//---------------------------------------------------------------------------
#include <iostream.h>
//---------------------------------------------------------------------------
int main()
{
    srand(time(NULL));
    float r = 0.0;
    r += rand()%9;
    r += (rand()%9)/10.0;
    r += (rand()%9)/100.0;
    r += (rand()%9)/1000.0;
 
    cout << r << endl;
    system("pause");
    return 0;
}
//---------------------------------------------------------------------------
Если хотите, переделайте деление и вынесите его в рекурсивную функцию. Вызывать её нужно N-раз, где N - заданная точность (размер мантиссы).
Соответственно, одним из параметров должен быть и диапазон.
chron1c
4 / 4 / 1
Регистрация: 27.12.2009
Сообщений: 34
03.05.2010, 17:00  [ТС]     rand() в С для вещественных чисел #3
Я вот как-то не могу этого понять.
rand() же даёт значение от 0 до 32767 ( точно не уверен )?
И остаток от деления на 9 может быть вне моего диапазона О.о И как это ограничить?
MikeSoft
Эксперт C++
 Аватар для MikeSoft
3781 / 1765 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
03.05.2010, 17:14     rand() в С для вещественных чисел #4
chron1c, да, rand генерирует число в диапазоне [0;32767]

C++
1
r = rand()%9;
Данный код генерирует псевдослучайное число в диапазоне [0;9]

Собственно, число 9 и является ограничителем.
Изменяя этот ограничитель - вы получаете диапазон.
chron1c
4 / 4 / 1
Регистрация: 27.12.2009
Сообщений: 34
03.05.2010, 17:23  [ТС]     rand() в С для вещественных чисел #5
Спасибо, уже разобрался.
Yandex
Объявления
03.05.2010, 17:23     rand() в С для вещественных чисел
Ответ Создать тему
Опции темы

Текущее время: 17:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru