我正在尝试生成一个包含1万个0到100000之间整数的文件,以便稍后对它们进行归并排序。
使用fstream生成文件时,我从未得到超过32760的整数。
以下方法生成文件,然后读取它并检查是否有任何超过32750的整数。通常会得到3-5个介于32750和32760之间的整数。为什么会发生这种情况,如何解决?这是种子问题还是随机函数的实际使用问题?
使用fstream生成文件时,我从未得到超过32760的整数。
以下方法生成文件,然后读取它并检查是否有任何超过32750的整数。通常会得到3-5个介于32750和32760之间的整数。为什么会发生这种情况,如何解决?这是种子问题还是随机函数的实际使用问题?
// sizeOfArray = 10000
void generateFile() {
ofstream fout("unsorted.txt");
srand(time(NULL));
// Generating the file
int num;
for(int i = 0; i < sizeOfArray; i++) {
num = rand() % 100000;
if(i < sizeOfArray-1)
//fout << i+1 << ": " << num << endl;
fout << num << endl;
else
//fout << i+1 << ": " << num;
fout << num;
}
// Reading the File Back
ifstream fin("unsorted.txt");
for(int i = 0; i < sizeOfArray; i++) {
fin >> num;
if(num > 32750)
cout << num << endl;
}
cin.get();
}
已解决
使用下面提供的答案,我生成了该文件500次
并且我收到的最高整数是99931.
rand()
函数的范围为0 - RAND_MAX
。RAND_MAX
取决于库,但至少应该是32767
。 - OGH