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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
igorbelykh
8 / 8 / 2
Регистрация: 01.03.2013
Сообщений: 85
#1

Генерация случайного числа больше нуля, но меньше единицы - C++

18.03.2013, 00:38. Просмотров 788. Ответов 7
Метки нет (Все метки)

Всем привет.

Подскажите, как можно генерировать псевдослучайное число больше нуля, но меньше единицы. При этом количество цифр после точки должно быть от 16 до 18 включительно.

Заранее всем спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2013, 00:38     Генерация случайного числа больше нуля, но меньше единицы
Посмотрите здесь:

C++ Генерация случайного числа
Найти в каждом столбце матрицы G элементы, которые больше числа А и меньше числа С C++
C++ Генерация случайного числа, максимально случайного
Генерация случайного простого числа C++
Запись текста и генерация случайного числа C++
Найти элементы в каждом столбце матрицы G размером 7х4, которые больше числа А и меньше числа С C++
Генерация случайного числа каждую секунду C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
5454 / 1820 / 335
Регистрация: 10.12.2010
Сообщений: 5,384
Записей в блоге: 3
18.03.2013, 01:06     Генерация случайного числа больше нуля, но меньше единицы #2
Вам придется писать свой тип данных, а уже под него генератор.
DiffEreD
1427 / 764 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
18.03.2013, 01:18     Генерация случайного числа больше нуля, но меньше единицы #3
http://en.cppreference.com/w/cpp/num...rate_canonical
HighPredator
5454 / 1820 / 335
Регистрация: 10.12.2010
Сообщений: 5,384
Записей в блоге: 3
18.03.2013, 01:31     Генерация случайного числа больше нуля, но меньше единицы #4
yuron_477, и что?
DiffEreD
1427 / 764 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
18.03.2013, 01:40     Генерация случайного числа больше нуля, но меньше единицы #5
Ну как что, вот пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <iomanip>
#include <random>
#include <ctime>
 
int main()
{
    std::mt19937 gen;
    gen.seed(unsigned(std::ctime(nullptr)));
    for(int n=0; n<10; ++n) {
        std::cout << std::setprecision(18) << std::generate_canonical<double, 10>(gen) << "\n";
    }
 
    return 0;
}
HighPredator
5454 / 1820 / 335
Регистрация: 10.12.2010
Сообщений: 5,384
Записей в блоге: 3
18.03.2013, 02:11     Генерация случайного числа больше нуля, но меньше единицы #6
yuron_477, просто double дает только 15 десятичных разрядов, потому что у него 53 значащих бита.

Добавлено через 19 минут
А за пример спасибо.
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,248
Завершенные тесты: 2
18.03.2013, 11:25     Генерация случайного числа больше нуля, но меньше единицы #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <time.h>
#include <math.h>
#include <windows.h>
 
using namespace std;
 
int main()  {
    srand((unsigned long)time(NULL));
    double value = (double)(rand() % (long)pow((double)10, (double)100)) / (rand() % (long)pow((double)10, (double)100) + 1);
    while(true)  {
        value = 0;
        double left = (double)(rand() % (long)pow((double)10, (double)100));
        value = left / (left + (double)(rand() % (long)pow((double)10, (double)100)) + 1);
        cout << value << endl;
        Sleep(100);
    }
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2013, 21:57     Генерация случайного числа больше нуля, но меньше единицы
Еще ссылки по теме:

Генерация случайного числа с плавающей чточкой C++
C++ Генерация случайного числа
Генерация случайного четырехзначного числа без цифр, больших 7 и 0 C++
Генерация пятизначного случайного числа C++
Если среднее арифметическое чисел больше нуля, то результат записать в один файл, если меньше - в другой C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
igorbelykh
8 / 8 / 2
Регистрация: 01.03.2013
Сообщений: 85
18.03.2013, 21:57  [ТС]     Генерация случайного числа больше нуля, но меньше единицы #8
Всем спасибо. Не стал заморачиваться, так как нужна только строковое значение, то решил это вот каким образом:
C++
1
2
3
4
5
6
7
8
9
10
11
wchar_t tmp[21];
srand((unsigned)time(NULL));
wchar_t subtmp[21];
while(wcslen(tmp) < 18){
    wsprintf(subtmp, L"%i", rand());
    if(wcslen(tmp) + wcslen(subtmp) > 20){
        int pos = 20 - wcslen(tmp);
        subtmp[pos] = L'\0';
    }
    wcscat_s(tmp, 21, subtmp);
}
Yandex
Объявления
18.03.2013, 21:57     Генерация случайного числа больше нуля, но меньше единицы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru