Pseudo losowe liczby

Odpowiedz Nowy wątek
2017-12-17 00:22
0

Witam, mam do zrobienia poniższe zadanie. Napisałem już częściowo kod który losuje mi liczby ale przyznaje że nie wiem jak wyświetlić liczbę najczęściej losowaną oraz liczbę jej wystąpień. Mam pytanie czy trzeba tu użyć tablic dynamicznych żeby program zapamiętał te liczby i potem je zliczył? No i jak je zliczyć, czy wystarczy jak użyje do tego pętli?
W poniższym kodzie wyświetlam te wszystkie liczby tylko po to by je sprawdzić potem usunę "cout" bo jest nie potrzebny.

Dziękuje uprzejmie za pomoc oraz sugestie!

Zad:
Wygenerować 1000000 liczb losowych ze zbioru [0,....,100], a następnie wyświetlić liczbę najczęściej losowaną oraz liczbę jej wystąpień.

--//MÓJ KOD\--

#include <iostream>
#include <time.h>
#include <cstdlib>

using namespace std;

int main()
{
    int i,liczba;
    cout<<"Wylosowanie 1000000 liczb całkowitych ze zbioru od 0 do 100"<<endl;

    for(i=0; i<=1000000; i++)
    {

    srand(time(NULL));
    liczba=rand()%100+1;
    cout<<liczba<<"\t";
    }

    system("pause");
}
edytowany 2x, ostatnio: kq, 2017-12-17 00:24

Pozostało 580 znaków

2017-12-17 00:26
kq
1

Popracuj nad formatowaniem.

Jeśli chodzi o zliczanie, to polecam std::map albo std::unordered_map.

Przy okazji, polecam lekturę: https://dsp.krzaq.cc/post/180/nie-uzywaj-rand-cxx-ma-random/


Pozostało 580 znaków

2017-12-17 00:34
1

Dodam, że:

Napisałem już częściowo kod który losuje mi liczby

Najprawdopodobniej wszystkie wylosowane liczby będą identyczne, ponieważ srand(time(NULL)); jest w niewłaściwym miejscu.
Sprawdź jakie liczby losuje program.
Generujesz 1000001 liczb.


Nie pisz na priv. Zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: YooSy, 2017-12-17 00:38

Pozostało 580 znaków

2017-12-17 00:53
1

Koniecznie wyrzuć srand(time(NULL)); poza pętlę!

#include <iostream>
#include <time.h>
#include <cstdlib>

using namespace std;

int main()
{
    int liczba;
    int ArrayCounter[101] = { 0 }; // stworzenie 101-elementowej tablicy wypełnionej zerami
    cout << "Wylosowanie 1000000 liczb całkowitych ze zbioru od 0 do 100" << endl;

    srand(time(NULL));
    for (int i = 0; i <= 1000000; i++) {
        liczba = rand() % 100 + 1;
        ArrayCounter[liczba]++; // inkrementujesz indeks tablicy odpowiadajacy wylosowanej liczbie
    }
    system("pause");
}
edytowany 1x, ostatnio: Hodor, 2017-12-17 00:55
Pozostaje Ci wygooglować coś w stylu 'c++ find max value in array' - Hodor 2017-12-17 00:58

Pozostało 580 znaków

2017-12-17 00:57
0
YooSy napisał(a):

Dodam, że:

Napisałem już częściowo kod który losuje mi liczby

Najprawdopodobniej wszystkie wylosowane liczby będą identyczne, ponieważ srand(time(NULL)); jest w niewłaściwym miejscu.
Sprawdź jakie liczby losuje program.
Generujesz 1000001 liczb.

Faktycznie, masz rację, poprawiłem:

srand(time(NULL));
for(i=0; i<=999999; i++)
{

liczba=rand()%100+1;
cout<<liczba<<"\t";
}

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0