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

Гистограмка = буутс + мап - C++

Восстановить пароль Регистрация
 
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
05.07.2012, 11:10     Гистограмка = буутс + мап #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
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
//
 
#include <boost/random.hpp> // Convenience header file
#include <iostream>
#include <ctime>            // std::time
#include <boost/Random/detail/const_mod.hpp> // LCG class
#include <map>
 
using namespace std;
 
template<class PRNG, class Dist>
inline boost::variate_generator<PRNG&, Dist> make_gen(PRNG & rng, Dist d)
{
  return boost::variate_generator<PRNG&, Dist>(rng, d);
}
 
int main()
{
    
    // Get random number generator
    boost::mt19937 rng;
    // Set the seed. 
    rng.seed(static_cast<boost::uint32_t> (std::time(0)));
    boost::random::uniform_int_distribution<int> six(1,6);
    rng.seed(static_cast<unsigned int> (std::time(0)));
    boost::variate_generator<boost::mt19937&, boost::random::uniform_int_distribution<int> > 
                            uniRng(rng, six);
 
    map<int, long> myHistogram;
 
    myHistogram[1] = 0; 
    myHistogram[2] = 0;
    myHistogram[3] = 0;
    myHistogram[4] = 0;
    myHistogram[5] = 0;
    myHistogram[6] = 0;
 
    for (int n = 0; n <5; ++n)
    {
         switch (uniRng())
         {
        case 1: myHistogram[1]++; break;
        case 2: myHistogram[2]++; break;
        case 3: myHistogram[3]++; break;
        case 4: myHistogram[4]++; break;
        case 5: myHistogram[5]++; break;
        default: myHistogram[6]++; break;
         }
         cout << uniRng() << endl;
    }
            for (auto i = myHistogram.cbegin(); i != myHistogram.cend(); ++i)
            {
                cout <<"case:" << i->first << " frequency: " <<i->second<<" "<< endl;
            }
    
 
    return 0;
 
}
Миниатюры
Гистограмка = буутс + мап  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2012, 11:10     Гистограмка = буутс + мап
Посмотрите здесь:

C++ map<Int,MYMAP>, или мап хранящий мап
Удаление ключей в коллекции мап Java SE

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
05.07.2012, 11:52     Гистограмка = буутс + мап #2
в свитче генерация одного числа с записью в мапу, на печать идет другое сгегерированное число.
в чем выражается неправильный расчет?
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
05.07.2012, 13:56     Гистограмка = буутс + мап #3
C++
1
2
3
4
5
6
    myHistogram[1] = 0; 
    myHistogram[2] = 0;
    myHistogram[3] = 0;
    myHistogram[4] = 0;
    myHistogram[5] = 0;
    myHistogram[6] = 0;
можно не писать. long по умолчанию заинициализируется 0.

C++
1
2
3
4
5
6
7
8
9
         switch (uniRng())
         {
        case 1: myHistogram[1]++; break;
        case 2: myHistogram[2]++; break;
        case 3: myHistogram[3]++; break;
        case 4: myHistogram[4]++; break;
        case 5: myHistogram[5]++; break;
        default: myHistogram[6]++; break;
         }
--->
C++
1
myHistogram[uniRng()]++;
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
11.07.2012, 14:44  [ТС]     Гистограмка = буутс + мап #4
Цитата Сообщение от OstapBender Посмотреть сообщение
можно не писать. long по умолчанию заинициализируется 0.


--->
C++
1
myHistogram[uniRng()]++;
чо то я не понял идею поясните пожалуйста

Добавлено через 2 минуты
Цитата Сообщение от DU Посмотреть сообщение
в свитче генерация одного числа с записью в мапу, на печать идет другое сгегерированное число.
в чем выражается неправильный расчет?
там принскрин ну короче вот что выдает например

если рандомайзер генерит:
3
5
3
4
3

то код считает что:
единиц было -> 1
"2" -> 0
"3" -> 1
"4" -> 2
"5" -> 1
"6" -> 0
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
11.07.2012, 14:49     Гистограмка = буутс + мап #5
Leeto, чувак те намекнули что 2 вызова uniRng() генерируют 2 разных числа!

Цитата Сообщение от Leeto Посмотреть сообщение
чо то я не понял идею поясните пожалуйста
ну твое выражение можно сократить, как я предложил. посмотри сам у тебя на 1 case тот же самый индекс.
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
11.07.2012, 14:57  [ТС]     Гистограмка = буутс + мап #6
Цитата Сообщение от OstapBender Посмотреть сообщение
Leeto, чувак те намекнули что 2 вызова uniRng() генерируют 2 разных числа!


ну твое выражение можно сократить, как я предложил. посмотри сам у тебя на 1 case тот же самый индекс.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for (int n = 0; n <5; ++n)
    {
        int a = uniRng();
         switch (a)
         {
        case 1: myHistogram[1]++; break;
        case 2: myHistogram[2]++; break;
        case 3: myHistogram[3]++; break;
        case 4: myHistogram[4]++; break;
        case 5: myHistogram[5]++; break;
        default: myHistogram[6]++; break;
         }
         cout << a << endl;
    }
короч я вот так сделал вроде нормально считает

Я не понимаю как можно сократить ! Блин ну правда ! почему на 1 case один и тот же индекс я не вижу !!!блин ! что такое ! поясни дураку плиз
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
11.07.2012, 18:09     Гистограмка = буутс + мап #7
Цитата Сообщение от Leeto Посмотреть сообщение
Я не понимаю как можно сократить !
написал же
C++
1
myHistogram[uniRng()]++;
блин ну я хз как те обяснить... тут нечего объяснять то. сравни код просто.
Yandex
Объявления
11.07.2012, 18:09     Гистограмка = буутс + мап
Ответ Создать тему
Опции темы

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