C++写入100个随机数到txt文件每次输出相同值问题求助
C++随机数写入文件问题修复
错误原因
你的代码存在两处核心问题:
- 仅在循环外调用1次
rand()生成随机数,后续循环重复输出同一个固定值,这是运行结果全相同的主要原因 - 缺少
time()函数对应的头文件<ctime>,属于不规范写法,部分编译器会出现编译错误或种子生成异常
最小改动修复代码
在原有逻辑基础上仅调整代码顺序、补充缺失头文件即可正常运行:
#include <iostream> #include <fstream> #include <cstdlib> #include <ctime> // 补充time函数依赖的头文件 using namespace std; int main(){ ofstream output; output.open("Exercise.txt"); srand(time(0)); for(int i=0;i<100;i++) { int numbers = rand() % 1001; // 随机数生成逻辑移到循环内,每次迭代生成新值 output << numbers << " "; } cout << "Data appended" << endl; return 0; }
优化方案(可选)
如果需要更高质量的随机数、避免1秒内多次运行程序出现种子重复的问题,可使用C++11及以上版本提供的<random>库实现:
#include <iostream> #include <fstream> #include <random> using namespace std; int main(){ ofstream output("Exercise.txt"); // 初始化随机数生成器,使用真随机数设备作为种子 random_device rd; mt19937 gen(rd()); // 限定随机数范围为0~1000 uniform_int_distribution<int> dist(0, 1000); for(int i=0;i<100;i++) { output << dist(gen) << " "; } cout << "Data appended" << endl; return 0; }
内容的提问来源于stack exchange,提问作者exo444
相关产品推荐
相关产品推荐

