Pseudo losowe liczby

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");
}
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/

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.

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");
}
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";
}

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