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

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

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

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

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

Всем привет.

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

Заранее всем спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2013, 00:38     Генерация случайного числа больше нуля, но меньше единицы
Посмотрите здесь:
C++ Генерация случайного числа, максимально случайного
C++ Генерация случайного числа
C++ Генерация случайного числа
Генерация пятизначного случайного числа C++
Генерация случайного простого числа C++
Генерация случайного числа каждую секунду C++
Генерация случайного числа с плавающей чточкой C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
5474 / 1840 / 342
Регистрация: 10.12.2010
Сообщений: 5,431
Записей в блоге: 3
18.03.2013, 01:06     Генерация случайного числа больше нуля, но меньше единицы #2
Вам придется писать свой тип данных, а уже под него генератор.
DiffEreD
1429 / 766 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
18.03.2013, 01:18     Генерация случайного числа больше нуля, но меньше единицы #3
http://en.cppreference.com/w/cpp/num...rate_canonical
HighPredator
5474 / 1840 / 342
Регистрация: 10.12.2010
Сообщений: 5,431
Записей в блоге: 3
18.03.2013, 01:31     Генерация случайного числа больше нуля, но меньше единицы #4
yuron_477, и что?
DiffEreD
1429 / 766 / 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
5474 / 1840 / 342
Регистрация: 10.12.2010
Сообщений: 5,431
Записей в блоге: 3
18.03.2013, 02:11     Генерация случайного числа больше нуля, но меньше единицы #6
yuron_477, просто double дает только 15 десятичных разрядов, потому что у него 53 значащих бита.

Добавлено через 19 минут
А за пример спасибо.
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,256
Завершенные тесты: 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++
Генерация случайного четырехзначного числа без цифр, больших 7 и 0 C++
Если среднее арифметическое чисел больше нуля, то результат записать в один файл, если меньше - в другой C++
Найти в каждом столбце матрицы G элементы, которые больше числа А и меньше числа С C++
Найти элементы в каждом столбце матрицы G размером 7х4, которые больше числа А и меньше числа С 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