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

генерация случайных чисел - C++

Восстановить пароль Регистрация
 
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
16.10.2013, 21:20     генерация случайных чисел #1
Написать программу, которая должна обеспечить исчисление количества повторений заданного числа по модулю 100. Характеристика должна быть исчислена 10 раз подряд и каждый результат следует вывести на консоль. Длину последовательности случайных чисел должен задавать пользователь.
Напишите хоть по пунктам как делать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2013, 21:20     генерация случайных чисел
Посмотрите здесь:

C++ Генерация случайных чисел
C++ Генерация случайных чисел
C++ генерация случайных чисел
Генерация случайных чисел С++ C++
C++ Генерация случайных чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
16.10.2013, 21:34     генерация случайных чисел #2
Что насчет диапазона?
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
16.10.2013, 21:43  [ТС]     генерация случайных чисел #3
Цитата Сообщение от MrGluck Посмотреть сообщение
Что насчет диапазона?
в задании не указано! может задается пользователем!
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
16.10.2013, 22:00     генерация случайных чисел #4
Цитата Сообщение от yurets17 Посмотреть сообщение
в задании не указано!
Возьмем весь диапазон int
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
#include <iostream>
#include <random>
#include <functional>
 
int main()
{
    const int val = 13, M = 10; // заданное число, количество подсчетов
    int N, counter;             // количество повторений, счетчик
    std::mt19937 gen { std::random_device()() };
    std::uniform_int_distribution<> uid;
    auto roll = std::bind(uid, gen);
    std::cout << "The number of repetitions: ";
    std::cin >> N;
    for (int i=0; i < M; i++)
    {
        counter = 0;
        std::cout << std::endl << i+1 << ": ";
        for (int j=0; j < N; j++)
        {
            int x = roll(); // генерируем СЧ
            std::cout << x << " ";
            if (x % 100 == val)
                counter++;
        }
        std::cout << "\nNumber of repeats " << val << " mod 100 = " << counter;
    }
}
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
16.10.2013, 22:10  [ТС]     генерация случайных чисел #5
Цитата Сообщение от MrGluck Посмотреть сообщение
Возьмем весь диапазон int
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
#include <iostream>
#include <random>
#include <functional>
 
int main()
{
    const int val = 13, M = 10; // заданное число, количество подсчетов
    int N, counter;             // количество повторений, счетчик
    std::mt19937 gen { std::random_device()() };
    std::uniform_int_distribution<> uid;
    auto roll = std::bind(uid, gen);
    std::cout << "The number of repetitions: ";
    std::cin >> N;
    for (int i=0; i < M; i++)
    {
        counter = 0;
        std::cout << std::endl << i+1 << ": ";
        for (int j=0; j < N; j++)
        {
            int x = roll(); // генерируем СЧ
            std::cout << x << " ";
            if (x % 100 == val)
                counter++;
        }
        std::cout << "\nNumber of repeats " << val << " mod 100 = " << counter;
    }
}
а что значит везде вот это std:: ?? я просто пишу на С++ в QT Creator и такого раньше не встречал

Добавлено через 4 минуты
Цитата Сообщение от MrGluck Посмотреть сообщение
Возьмем весь диапазон int
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
#include <iostream>
#include <random>
#include <functional>
 
int main()
{
    const int val = 13, M = 10; // заданное число, количество подсчетов
    int N, counter;             // количество повторений, счетчик
    std::mt19937 gen { std::random_device()() };
    std::uniform_int_distribution<> uid;
    auto roll = std::bind(uid, gen);
    std::cout << "The number of repetitions: ";
    std::cin >> N;
    for (int i=0; i < M; i++)
    {
        counter = 0;
        std::cout << std::endl << i+1 << ": ";
        for (int j=0; j < N; j++)
        {
            int x = roll(); // генерируем СЧ
            std::cout << x << " ";
            if (x % 100 == val)
                counter++;
        }
        std::cout << "\nNumber of repeats " << val << " mod 100 = " << counter;
    }
}
И еще мне интересна вот эта строчка mt19937 gen {random_device()() };
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
16.10.2013, 22:17     генерация случайных чисел #6
Цитата Сообщение от yurets17 Посмотреть сообщение
а что значит везде вот это std:: ??
это элемент языка С++, пространство имен. Я пишу для всех функций полное название, а не кидаю все в стандартное пространство std.

Цитата Сообщение от yurets17 Посмотреть сообщение
mt19937 gen {random_device()() };
Создаем одну из разновидностей Вихря Мерсенна, псевдо-генератора СЧ и инициализируем его результатом выполнения оператора () от генератора с лучшей энтропией, а точнее генератора недетерменированных СЧ std::random_device.
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
16.10.2013, 22:29  [ТС]     генерация случайных чисел #7
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include <iostream>
#include <cmath>
#include <windows.h>
#include <cstdlib>
#include "QTime"
#include <conio.h>
#include <random>
#include <functional>
void tabFunc();
void intChain();
void rndChain();
using namespace std;
int main()
{char ch;
 int n;
    do
    {system("cls");
        SetConsoleTitleA(" Використання циклу for");
        cout<<" Варiанти використання циклу for:\n";
        cout<<" 1. Табулювання функцiї\n";
        cout<<" 2. Обробка послiдовностi цiлих чисел\n";
        cout<<" 3. Обробка послiдовностi випадкових чисел\n";
        cout<<" Виберiть номер варiанту ";
        cin>>ch;
        switch(ch)
        { case '1':tabFunc(); break;
          case '2':intChain(); break;
          case '3':rndChain(); break;
        }
        cout<<"\nДля продовження натиснiть будь-яку клавiшу...";
        getch();
    }while (true);
    return 0;
}
void tabFunc()
{system("cls");
    SetConsoleTitleA(" Табулювання функцiї g=a*pow(e,-b*x) - b*x*pow(e,-a) * sin(c*x)/c");
    cout<<" Введiть числа для розрахунку формули:\n";
    float a, b, c, e;
    cout<<" a = "; cin>>a;
    cout<<" b = "; cin>>b;
    cout<<" c = "; cin>>c;
    cout<<" e = "; cin>>e;
    cout<<" Введiть початкове i кiнечне значення аргументу\n";
    float x0, xMax; cin>>x0>>xMax;
    cout<<" Введiть крок змiни аргументу\n";
    float step; cin>>step;
    float x;
    float g;
    int k;
    k=ceil((xMax-x0)/step);
    for(int i=0; i<=k; i++)
    {x=x0+step*i;
        g=a*pow(e,-b*x) - b*x*pow(e,-a) * sin(c*x)/c;
        cout.width(5); cout.precision(3); cout<<x;
        cout.width(15); cout.precision(4); cout<<g<<"\n";
    }
}
int promizhna(int n)
{ int sum=0;
    for (int i=2; (i<=n/2); i++)
    { if (n%i==0)
            sum+=i;
    }
    return sum;
}
void intChain()
{system("cls");
    cout<<"Введiть початкове i кiнечне значення промiжку\n";
    int n1,n2; cin>>n1>>n2;
    for(n1;n1<=n2;n1++)
    { cout.width(5); cout.precision(3);
      cout<<n1;
      cout.width(25); cout.precision(5);
      cout<<promizhna(n1)<<"\n"; }
}
void rndChain()
{
      const int val = 13, M = 10; // заданное число, количество подсчетов
      int N, counter;             // количество повторений, счетчик
      std::mt19937 gen { std::random_device()() };
      std::uniform_int_distribution<> uid;
      auto roll = std::bind(uid, gen);
      std::cout << "The number of repetitions: ";
      std::cin >> N;
      for (int i=0; i < M; i++)
      {
          counter = 0;
          std::cout << std::endl << i+1 << ": ";
          for (int j=0; j < N; j++)
          {
              int x = roll(); // генерируем СЧ
              std::cout << x << " ";
              if (x % 100 == val)
                  counter++;
          }
          std::cout << "\nNumber of repeats " << val << " mod 100 = " << counter;
      }
  }
очень много ошибок определяет! обьясни пожалуйста, если можно, почему?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2013, 23:36     генерация случайных чисел
Еще ссылки по теме:

C++ Генерация случайных чисел
C++ Генерация случайных чисел
C++ Генерация случайных чисел

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
16.10.2013, 23:36     генерация случайных чисел #8
Цитата Сообщение от yurets17 Посмотреть сообщение
очень много ошибок определяет!
самих ошибок нет.
Хочу заметить, что мой код использует стандарт С++11, который скорее всего не поддерживается вашим компилятором.
Yandex
Объявления
16.10.2013, 23:36     генерация случайных чисел
Ответ Создать тему
Опции темы

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