Ich habe einen Zufallsgenerator mit srand()
geschrieben, die ein Array von Zufallszahlen gegebener Größe erstellt. Ich möchte, dass meine Zufallszahlen Werte bis zu 1000.000 annehmen, und um dies zu erhalten, habe ich jeden Eintrag des Arrays als rand()%1000000
im folgenden Code definiert. Das Seltsame ist, dass die zufälligen Werte alle bis zu 30.000 betragen und die größeren Zufallszahlen wie 987.623 nicht erstellt werden, dh die Anzahl der Zahlen der Zufallszahlen ist nicht größer als 5. Hat jemand eine Idee warum das so ist Ereignis? Gibt es einen anderen Weg (Funktion), den Sie anbieten können, um größere Zahlen als diese zu bekommen?Warum ist die Zifferngröße des Zufallsgenerators begrenzt?
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <time.h>
#include <cmath>
#include <vector>
using namespace std;
int * rng(int size) {
int* a = NULL;
a = new int[size];
for (int i = 0; i < size; i++) {
a[i] = rand() % 1000000;
if (a[i] == 0) {
a[i] += 1;
}
}
for (int j = 0; j < size; j++) {
cout << a[j] << " ";
}
delete[] a;
a = NULL;
return a;
}
int main() {
srand(time(NULL));
int size;
int* x;
ifstream myfile("size.txt");
ofstream outfile("input.txt");
while (myfile>>size) {
x=rng(size);
if (outfile.is_open()) {
for(int count = 0; count < size; count ++) {
outfile<< x[count] << " " ;
}
myfile.close();
}
}
return 0;
delete [] x;
x = NULL;
}
Als Nebenbemerkung erzeugt Ihr Code Speicherverluste, weil alles, was nach dem 'return a;' kommt, nicht ausgeführt wird. Verwenden Sie einen Debugger, um den Code schrittweise zu bearbeiten. –
Danke Raw N 5, ich werde es reparieren. – esra
Mögliches Duplikat von [Erweitere rand() maximale Reichweite] (http://stackoverflow.com/questions/9775313/extend-rand-max-range) –