Also ich versuche, 10.000 Zufallszahlen von 1-100 zu generieren, aber es erzeugt nur bis zu 99 Zahlen, denn wenn ich es anzeigen kann ich nur von 1-99 sehen, es sei denn es ist mein Code, um es zu finden. Was passiert in meinem Code ist ich versuche zu finden, wie oft die Zahl generiert wird. Grundsätzlich eine Frequenz/Histogramm.randomizer erzeugt nur bis zu 99 C++
EDIT: Ich erzeuge 100, aber es ist nicht die Anzeige, i hier eine Fehlermeldung erhalten, ist mein Code:
vector<int> vint;
for (int i = 0; i < 10000; i++)
{
int x = (rand() % 100) + 1;
vint.push_back(x);
}
frequency(vint);
void frequency (vector<int> v1)
{
int counter = 1;
int max = 0;
int mode = v1[0];
int numbercheck = 0;
for (int pass = 0; pass < 10000-1 ; pass++)
{
if (v1[pass] == v1[pass + 1])
{
counter++;
numbercheck++;
}
else
{
cout << v1[pass] << ": " << counter << "..................." << endl;
counter = 1;
}
}
Ihr Code sieht gut aus, nur dass rand() 99 nicht generiert hat und somit Ihre Addition von 1 möglicherweise nicht funktioniert hat. Bitte erhöhen Sie die Größe und sehen Sie, ob Sie eine 100 bekommen. Hoppla! For-Schleife ist außerhalb der Funktion für die Generierung. – user902384
Denken Sie daran, 'rand()' ist nicht sehr zufällig, wenn Sie kryptografische Zufallszahlen benötigen, sollten Sie einen besseren Generator verwenden. Sie sollten Werte im Bereich von 0 bis 99 mit diesem Code erhalten, +1 sollte es auf 1 bis 100 versetzen, aber Rollen 100 ist ein Ereignis 1 in 100. Sind Sie sicher, dass Sie genügend Daten generieren, um sicherzugehen, dass Sie nie 100 bekommen? Haben Sie die Verteilung Ihrer Zufallsfunktion getestet? – tadman
Ihr Code wird nicht kompiliert, aber Sie könnten ihn leicht geschrieben haben, um ein eigenständiges, minimales funktionierendes Beispiel zu erstellen. Bitte bearbeiten Sie Ihren Code, damit er ohne Änderungen ausgeführt werden kann. – Richard