Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
n0n4m3r
25 / 25 / 15
Регистрация: 12.10.2013
Сообщений: 183
#1

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

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

Возможно кому-то пригодится. Без дополнительных библиотек, вроде сносный такой генератор.
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;
}

http://www.cyberforum.ru/cpp-beginners/thread2124605.html
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2014, 02:27
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Генератор случайных вещественных чисел, C++ (C++):

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

Генератор случайных чисел
составить генератор случайных чисел, имеющий два члена - границы...

Генератор случайных чисел
Здравствуйте, написал вот такой генератор псевдослучайных чисел в диапазоне...

Генератор случайных чисел
Как написать генератор случайных (пусть и псевдо) чисел, выдающий на выходе...

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

24
gromo
372 / 271 / 30
Регистрация: 04.09.2009
Сообщений: 1,214
08.01.2014, 02:46 #2
Спасибо! Я как раз искал!!!
0
MrGluck
Модератор
Эксперт CЭксперт С++
7982 / 4863 / 1424
Регистрация: 29.11.2010
Сообщений: 13,238
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
0 / 0 / 0
Регистрация: 08.01.2014
Сообщений: 1
11.01.2014, 18:24 #4
Народ, нужна программа, которая при запуске генерирует случайное число от 0 до 9, а затем через каждые 5 секунд пишет еще одно число на следующей строчки и так пока не закроется программа. Как это можно сделать?
0
n0n4m3r
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
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 422
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
xtorne21st
интересующийся
304 / 275 / 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
MrGluck
Модератор
Эксперт CЭксперт С++
7982 / 4863 / 1424
Регистрация: 29.11.2010
Сообщений: 13,238
11.01.2014, 23:57 #8
Цитата Сообщение от ilja123 Посмотреть сообщение
Юзай мой код Преимущества Понятный и везде работает
ну да, ну да. Учитывая что любой мало-мальски новый компилятор ваш код соптимизирует и выкинет пустой цикл.
0
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 422
12.01.2014, 00:00 #9
MrGluck,
uniform_real_distribution<double>
Это только в С++11 работает. Не лучший вариант предлагать такое в разделе "для новичков".
0
Tulosba
:)
Эксперт С++
4746 / 3240 / 496
Регистрация: 19.02.2013
Сообщений: 9,046
12.01.2014, 00:06 #10
Цитата Сообщение от ilja123 Посмотреть сообщение
Это только в С++11 работает. Не лучший вариант предлагать такое в разделе "для новичков".
Новичкам пора осваивать современные стандарты.
1
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 422
12.01.2014, 00:08 #11
Я только ЗА! Но фраза компилятора
warning: identifier is a keyword in C++11
Может травмировать начинающих Сишников
0
Tulosba
:)
Эксперт С++
4746 / 3240 / 496
Регистрация: 19.02.2013
Сообщений: 9,046
12.01.2014, 00:10 #12
Цитата Сообщение от ilja123 Посмотреть сообщение
Может травмировать начинающих Сишников
сишникам в раздел "си", а тут плюсы как никак. В конце этого года ещё С++14 должны принять, так что время на месте не стоит.
0
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 422
12.01.2014, 00:14 #13
Цитата Сообщение от Tulosba Посмотреть сообщение
В конце этого года ещё С++14 должны принять

И какие там перемены? Есть че почитать???
0
Tulosba
:)
Эксперт С++
4746 / 3240 / 496
Регистрация: 19.02.2013
Сообщений: 9,046
12.01.2014, 00:20 #14
Цитата Сообщение от ilja123 Посмотреть сообщение
Есть че почитать???
Начните с вики. В основном исправления C++11.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7982 / 4863 / 1424
Регистрация: 29.11.2010
Сообщений: 13,238
12.01.2014, 00:21 #15
Цитата Сообщение от ilja123 Посмотреть сообщение
Это только в С++11 работает. Не лучший вариант предлагать такое в разделе "для новичков".
ну да, uniform_int_distribution намного сложнее чем эти формулы с просчетом СЧ в диапазоне не от 0 до N-1. А есле еще и нужно СЧ не из класса целых чисел... такая жопопляска начинается.

Вот вам мануальчик, сам писал:
http://www.quizful.net/post/random-number-generation-in-cpp11
1
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 422
12.01.2014, 00:22 #16
Ну за это С++ и любят Те кому эт не интересно уходят в C# девелоперы
0
MrGluck
Модератор
Эксперт CЭксперт С++
7982 / 4863 / 1424
Регистрация: 29.11.2010
Сообщений: 13,238
12.01.2014, 00:24 #17
Цитата Сообщение от Tulosba Посмотреть сообщение
Начните с вики. В основном исправления C++11.
и VLA наконец
Возможно, это повлияет и на VS и они все-таки реализуют его, тогда (ну если совсем все хорошо будет), и поддержку С99 в сишном компайлере впихнут. И можно будет вздохнуть с облегчением)

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

Добавлено через 32 секунды
Цитата Сообщение от ilja123 Посмотреть сообщение
Ну за это С++ и любят Те кому эт не интересно уходят в C# девелоперы
что бы тогда не на Сях сидеть?
0
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 422
12.01.2014, 00:25 #18
пасиб Добавил в закладки Но если честно название
uniform_real_distribution<double>
убило Моглиб по лучше Ну напимер NewRand
0
MrGluck
Модератор
Эксперт CЭксперт С++
7982 / 4863 / 1424
Регистрация: 29.11.2010
Сообщений: 13,238
12.01.2014, 00:32 #19
NewRand - неинформативно.
Вы не переживайте, со временем также станете называть) Меня тоже это когда-то удивляло.
0
jorik567
1 / 1 / 1
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2014, 15:16
Привет! Вот еще темы с решениями:

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

Генератор случайных чисел
Еще одна тема о генераторе. Только вопрос, на который я пока не нашел ответа в...

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

Генератор случайных чисел
В общем, нужно составить программу, которая реализует алгоритм генерации...


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

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

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