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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
n0n4m3r
23 / 23 / 6
Регистрация: 12.10.2013
Сообщений: 183
08.01.2014, 02:27     Генератор случайных вещественных чисел, C++ #1
Возможно кому-то пригодится. Без дополнительных библиотек, вроде сносный такой генератор.
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gromo
 Аватар для gromo
367 / 266 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
08.01.2014, 02:46     Генератор случайных вещественных чисел, C++ #2
Спасибо! Я как раз искал!!!
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5791 / 3166 / 359
Регистрация: 29.11.2010
Сообщений: 8,469
08.01.2014, 03:40     Генератор случайных вещественных чисел, C++ #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) << " ";
}
Ressima
Сообщений: n/a
11.01.2014, 18:24     Генератор случайных вещественных чисел, C++ #4
Народ, нужна программа, которая при запуске генерирует случайное число от 0 до 9, а затем через каждые 5 секунд пишет еще одно число на следующей строчки и так пока не закроется программа. Как это можно сделать?
n0n4m3r
23 / 23 / 6
Регистрация: 12.10.2013
Сообщений: 183
11.01.2014, 22:34  [ТС]     Генератор случайных вещественных чисел, C++ #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;
}
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 382
11.01.2014, 23:05     Генератор случайных вещественных чисел, C++ #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++){;}
    }
 
}
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.01.2014, 23:38     Генератор случайных вещественных чисел, C++ #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';
    }
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5791 / 3166 / 359
Регистрация: 29.11.2010
Сообщений: 8,469
11.01.2014, 23:57     Генератор случайных вещественных чисел, C++ #8
Цитата Сообщение от ilja123 Посмотреть сообщение
Юзай мой код Преимущества Понятный и везде работает
ну да, ну да. Учитывая что любой мало-мальски новый компилятор ваш код соптимизирует и выкинет пустой цикл.
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 382
12.01.2014, 00:00     Генератор случайных вещественных чисел, C++ #9
MrGluck,
uniform_real_distribution<double>
Это только в С++11 работает. Не лучший вариант предлагать такое в разделе "для новичков".
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
12.01.2014, 00:06     Генератор случайных вещественных чисел, C++ #10
Цитата Сообщение от ilja123 Посмотреть сообщение
Это только в С++11 работает. Не лучший вариант предлагать такое в разделе "для новичков".
Новичкам пора осваивать современные стандарты.
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 382
12.01.2014, 00:08     Генератор случайных вещественных чисел, C++ #11
Я только ЗА! Но фраза компилятора
warning: identifier is a keyword in C++11
Может травмировать начинающих Сишников
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
12.01.2014, 00:10     Генератор случайных вещественных чисел, C++ #12
Цитата Сообщение от ilja123 Посмотреть сообщение
Может травмировать начинающих Сишников
сишникам в раздел "си", а тут плюсы как никак. В конце этого года ещё С++14 должны принять, так что время на месте не стоит.
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 382
12.01.2014, 00:14     Генератор случайных вещественных чисел, C++ #13
Цитата Сообщение от Tulosba Посмотреть сообщение
В конце этого года ещё С++14 должны принять

И какие там перемены? Есть че почитать???
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
12.01.2014, 00:20     Генератор случайных вещественных чисел, C++ #14
Цитата Сообщение от ilja123 Посмотреть сообщение
Есть че почитать???
Начните с вики. В основном исправления C++11.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5791 / 3166 / 359
Регистрация: 29.11.2010
Сообщений: 8,469
12.01.2014, 00:21     Генератор случайных вещественных чисел, C++ #15
Цитата Сообщение от ilja123 Посмотреть сообщение
Это только в С++11 работает. Не лучший вариант предлагать такое в разделе "для новичков".
ну да, uniform_int_distribution намного сложнее чем эти формулы с просчетом СЧ в диапазоне не от 0 до N-1. А есле еще и нужно СЧ не из класса целых чисел... такая жопопляска начинается.

Вот вам мануальчик, сам писал:
http://www.quizful.net/post/random-n...ation-in-cpp11
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 382
12.01.2014, 00:22     Генератор случайных вещественных чисел, C++ #16
Ну за это С++ и любят Те кому эт не интересно уходят в C# девелоперы
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5791 / 3166 / 359
Регистрация: 29.11.2010
Сообщений: 8,469
12.01.2014, 00:24     Генератор случайных вещественных чисел, C++ #17
Цитата Сообщение от Tulosba Посмотреть сообщение
Начните с вики. В основном исправления C++11.
и VLA наконец
Возможно, это повлияет и на VS и они все-таки реализуют его, тогда (ну если совсем все хорошо будет), и поддержку С99 в сишном компайлере впихнут. И можно будет вздохнуть с облегчением)

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

Добавлено через 32 секунды
Цитата Сообщение от ilja123 Посмотреть сообщение
Ну за это С++ и любят Те кому эт не интересно уходят в C# девелоперы
что бы тогда не на Сях сидеть?
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 382
12.01.2014, 00:25     Генератор случайных вещественных чисел, C++ #18
пасиб Добавил в закладки Но если честно название
uniform_real_distribution<double>
убило Моглиб по лучше Ну напимер NewRand
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5791 / 3166 / 359
Регистрация: 29.11.2010
Сообщений: 8,469
12.01.2014, 00:32     Генератор случайных вещественных чисел, C++ #19
NewRand - неинформативно.
Вы не переживайте, со временем также станете называть) Меня тоже это когда-то удивляло.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2014, 15:16     Генератор случайных вещественных чисел, C++
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
jorik567
1 / 1 / 0
Регистрация: 23.06.2013
Сообщений: 13
31.01.2014, 15:16     Генератор случайных вещественных чисел, C++ #20
MrGluck, читал мануал на quizful, спасибо. Но, есть вопрос по поводу распределений.
C++
1
2
3
    std::uniform_int_distribution<int> uid; 
    std::cin >> uid; 
    std::cout << uid;
было написано, что изменить параметры распределения нельзя (через min(), max(), a() и b(), т.к они возвращают переменную по значению). А при помощи >> можно? Может как-то используя буфер ввода?
Ведь cin как-то меняет параметры распределения...
Yandex
Объявления
31.01.2014, 15:16     Генератор случайных вещественных чисел, C++
Ответ Создать тему
Опции темы

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