25 / 25 / 15
Регистрация: 12.10.2013
Сообщений: 183
1

Генератор случайных вещественных чисел, C++

08.01.2014, 02:27. Показов 6544. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возможно кому-то пригодится. Без дополнительных библиотек, вроде сносный такой генератор.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <cmath>
#include <ctime>
 
using namespace std;
 
int main(){
    int min,max,range,number;
    srand (time(NULL));
    cout << "Enter minimum ammount: ";
    cin >> min;
    cout << "Enter maximum ammount: ";
    cin >> max;
    cout << "Enter max numbers after dot: ";
    cin >> range; 
    cout << "Enter ammount of float numbers: ";
    cin >> number;
 
 
    for(int i=0; i<number; i++){
        float sum=(rand()%(abs(min)+abs(max))-abs(min))*pow(0.1,rand()%(range+1));
        if(sum<0 && sum>-1){
            sum=(sum+rand()%min)*(-1);
        } else if(sum>0 && sum <1){
            sum=sum+rand()%max;
        }
        cout << sum << endl;
    }
    system("pause");
    return 0;
}
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2014, 02:27
Ответы с готовыми решениями:

Генератор случайных вещественных чисел в пользовательском диапазоне
Добрый день, подскажите пожалуйста. Как написать правильный генератор вещественных чисел (в...

Генератор случайных вещественных чисел в динамическом массиве
Всем привет Мне нужна помощь в следующем. нужно заполнить динамический массив рандоными...

Генератор вещественных чисел
Пытаюсь выполнить задание: Создать вещественный массив и преобразовать его таким образом, чтобы в...

Генератор случайных чисел
Добрый день!У меня есть код #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;cstring&gt; #include...

24
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
08.01.2014, 02:46 2
Спасибо! Я как раз искал!!!
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
08.01.2014, 03:40 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iomanip>
#include <iostream>
#include <random>
 
int main()
{
    int lbound, ubound, precision, amount;
    std::cout << "Enter lower bound: ";
    std::cin >> lbound;
    std::cout << "Enter upper bound: ";
    std::cin >> ubound;
    std::cout << "Enter precision: ";
    std::cin >> precision;
    std::cout << "Enter ammount of numbers: ";
    std::cin >> amount;
 
    std::uniform_real_distribution<double> dist(lbound, ubound);
    std::mt19937 gen {std::random_device()() }; // gen.seed(time(0));
 
    for(int i=0; i < amount; i++)
        std::cout << std::fixed << std::setprecision(precision) << dist(gen) << " ";
}
2
Ressima
11.01.2014, 18:24 4
Народ, нужна программа, которая при запуске генерирует случайное число от 0 до 9, а затем через каждые 5 секунд пишет еще одно число на следующей строчки и так пока не закроется программа. Как это можно сделать?
25 / 25 / 15
Регистрация: 12.10.2013
Сообщений: 183
11.01.2014, 22:34  [ТС] 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <time.h>
#include <Windows.h>
 
using namespace std;
 
int main(){
    srand(time(NULL));
    int i, a;
    for(i=1;i<2;){
        cout << "Random number is " << rand()%10 << endl;
        Sleep(5000);
    }
 
    system("pause");
    return 0;
}
0
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 507
11.01.2014, 23:05 6
Sleep не пойдет! (токо windows) Что MrGluck, вообще понятно ток ему Юзай мой код Преимущества Понятный и везде работает Недостатки зависит от процессора (надо корректировать индивидуально)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
int main()
{
    for(int i=1; i<2;){
        cout << "Ran num is: " << rand()%10 << endl;
        for(int j=0; j<800000000; j++){;}
    }
 
}
0
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
11.01.2014, 23:38 7
Ressima,
правда кушает хорошо CPU:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <ctime>
#include <cstdlib>
 
int getRand(unsigned maxBound)
{
    srand(time(0));
    return rand() % maxBound + 1;
}
 
int main()
{
    const int maxRandBound = 9;
    const int secondsDelay = 5;
 
    std::cout << getRand(maxRandBound) << '\n';
    while (true)
    {
        time_t start = time(0);
        while (time(0) < start + secondsDelay)
            ;
        std::cout << getRand(maxRandBound) << '\n';
    }
}
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
11.01.2014, 23:57 8
Цитата Сообщение от ilja123 Посмотреть сообщение
Юзай мой код Преимущества Понятный и везде работает
ну да, ну да. Учитывая что любой мало-мальски новый компилятор ваш код соптимизирует и выкинет пустой цикл.
0
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 507
12.01.2014, 00:00 9
MrGluck,
uniform_real_distribution<double>
Это только в С++11 работает. Не лучший вариант предлагать такое в разделе "для новичков".
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
12.01.2014, 00:06 10
Цитата Сообщение от ilja123 Посмотреть сообщение
Это только в С++11 работает. Не лучший вариант предлагать такое в разделе "для новичков".
Новичкам пора осваивать современные стандарты.
1
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 507
12.01.2014, 00:08 11
Я только ЗА! Но фраза компилятора
warning: identifier is a keyword in C++11
Может травмировать начинающих Сишников
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
12.01.2014, 00:10 12
Цитата Сообщение от ilja123 Посмотреть сообщение
Может травмировать начинающих Сишников
сишникам в раздел "си", а тут плюсы как никак. В конце этого года ещё С++14 должны принять, так что время на месте не стоит.
0
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 507
12.01.2014, 00:14 13
Цитата Сообщение от Tulosba Посмотреть сообщение
В конце этого года ещё С++14 должны принять

И какие там перемены? Есть че почитать???
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
12.01.2014, 00:20 14
Цитата Сообщение от ilja123 Посмотреть сообщение
Есть че почитать???
Начните с вики. В основном исправления C++11.
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
12.01.2014, 00:21 15
Цитата Сообщение от ilja123 Посмотреть сообщение
Это только в С++11 работает. Не лучший вариант предлагать такое в разделе "для новичков".
ну да, uniform_int_distribution намного сложнее чем эти формулы с просчетом СЧ в диапазоне не от 0 до N-1. А есле еще и нужно СЧ не из класса целых чисел... такая жопопляска начинается.

Вот вам мануальчик, сам писал:
http://www.quizful.net/post/ra... n-in-cpp11
1
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 507
12.01.2014, 00:22 16
Ну за это С++ и любят Те кому эт не интересно уходят в C# девелоперы
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
12.01.2014, 00:24 17
Цитата Сообщение от Tulosba Посмотреть сообщение
Начните с вики. В основном исправления C++11.
и VLA наконец
Возможно, это повлияет и на VS и они все-таки реализуют его, тогда (ну если совсем все хорошо будет), и поддержку С99 в сишном компайлере впихнут. И можно будет вздохнуть с облегчением)

Но это же не для новичков, они должны динам. массивы юзать, VLA - новый стандарт, де-факто сложно

Добавлено через 32 секунды
Цитата Сообщение от ilja123 Посмотреть сообщение
Ну за это С++ и любят Те кому эт не интересно уходят в C# девелоперы
что бы тогда не на Сях сидеть?
0
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 507
12.01.2014, 00:25 18
пасиб Добавил в закладки Но если честно название
uniform_real_distribution<double>
убило Моглиб по лучше Ну напимер NewRand
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
12.01.2014, 00:32 19
NewRand - неинформативно.
Вы не переживайте, со временем также станете называть) Меня тоже это когда-то удивляло.
0
1 / 1 / 0
Регистрация: 23.06.2013
Сообщений: 13
31.01.2014, 15:16 20
MrGluck, читал мануал на quizful, спасибо. Но, есть вопрос по поводу распределений.
C++
1
2
3
    std::uniform_int_distribution<int> uid; 
    std::cin >> uid; 
    std::cout << uid;
было написано, что изменить параметры распределения нельзя (через min(), max(), a() и b(), т.к они возвращают переменную по значению). А при помощи >> можно? Может как-то используя буфер ввода?
Ведь cin как-то меняет параметры распределения...
0
31.01.2014, 15:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.01.2014, 15:16
Помогаю со студенческими работами здесь

Генератор случайных чисел
Как задать минимальное и максимальное число при генерации случайных чисел?

Генератор случайных чисел
Реализовать генератор случайных числе в диапазоне от нуля до единицы. После генерации случайного...

Генератор случайных чисел
Есть функция, генерирующая случайные целые числа с помощью линейного конгруэнтного метода. Нужно...

генератор случайных чисел
как реализовать генератор случайных чисел? чтобы можно было вводить два числа(например 56 и 519), и...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru