Я написал генератор случайных чисел, используя srand()
, который создает массив случайных чисел заданного размера. Я хотел бы, чтобы мои случайные числа принимали значения до 1000 000, и чтобы получить это, я определил каждую запись массива как rand()%1000000
в коде ниже. Странно, что случайные значения составляют около 30 000, а более крупные случайные числа, такие как 987,623, не создаются, т. Е. Число цифр случайных чисел не превышает 5. Кто-нибудь имеет представление о том, почему это происходит? Есть ли другой способ (функция), который вы можете предложить, чтобы получить случайные числа, большие, чем эти?Почему размер цифр генератора случайных чисел ограничен?
#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;
}
В качестве побочного примечания ваш код создает утечки памяти, потому что все, что приходит после 'return a;', не будет выполнено. Используйте отладчик для выполнения кода. –
Спасибо Raw N 5, я исправлю это. – esra
Возможный дубликат [Extend rand() max range] (http://stackoverflow.com/questions/9775313/extend-rand-max-range) –