Generowanie histogramu

Generowanie histogramu
S1
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 6 lat
0

Cześć,

Mam przykładowy przedział na osi OX <1, 10>. Generuję sobie 100 liczb do tablicy X-ów z tego właśnie przedziału. Moim zadaniem jest sprawdzić do której klasy histogramu wpadnie dowolna, wylosowana liczba z tejże tablicy. Czy ja to robię dobrze? Ciągle wrzuca mi do jednego przedziału i to góra jedną liczbę...

Kopiuj

#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

int main()
{
    srand(unsigned(time(NULL)));
    double X[100], Y[100], TMP[10];
    int k = 10;     // liczba klas, podprzedzialow
    double d = 1/(double)k;     // szerokosc klasy

    for(int i = 0; i < 100; i++)
    {
        X[i] = 9*(double)rand()/(double)RAND_MAX + 1;
        // Y[i] = (double)rand()/(double)RAND_MAX;
        // cout << X[i] << endl;
    }

    for(int i = 0; i < k; i++)
    {
        TMP[i] = 0;
    }

    for(int i = 0; i < k; i++)
    {
        int l = (int)X[i]/d;
        cout << l << endl;
        TMP[l]++;
    }

    for(int i = 0; i < k; i++)
    {
        cout << TMP[i] << endl;
    }
    return 0;
}


C6
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 4 lata
  • Postów:30
0

A to rzutowanie w przypisaniu do l to na pewno działa tak jak myślisz?

PanRiK
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Szczecin
  • Postów:104
1

Nie za bardzo rozumiem jak ma to działać, ale jeżeli chodzi o rzutowanie:

Kopiuj
int l = (int)X[i]/d;

To robisz to tak:

Kopiuj
int wynik = (int)X[i];
int wynik = wynik/d;

Nie wiem czy jesteś tego świadomy, daje to zupełnie inne wyniki, niż

Kopiuj
int wyniki = (int)(X[i]/d);

Jeśli widzisz mój błąd to mnie popraw.
Pisanie błędnych wypowiedzi utrwala złe praktyki.
Kiedyś możesz dostać do ręki mój kod.
edytowany 2x, ostatnio: PanRiK

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.