C 中的数据流
data streaming in c++
本文关键字:数据流 更新时间:2023-10-16
我有一个程序,可以每1/10秒生成一个随机整数。这是代码:
int main()
{
ofstream myfile;
int max;
cout << "Max number: ";
cin >> max;
for (int i = 0; i < max; ++i)
{
myfile.open("test.txt",fstream::app);
myfile << random_int() << "n";
myfile.close();
this_thread::sleep_for(chrono::milliseconds(100));
}
return 0;
}
int random_int()
{
return rand() % 10;
}
现在的问题是,我需要编写一个程序来计算然后以相同速率输出平均值。如果数字生成器的输出为:
1
2
3
4
5
平均计算器的输出应为
1
1
2
2
3
每1/10秒,程序将输出一个数字。
注意:最大数字可以从0到数百万。通过在时间间隔内添加所有前几个数字来计算平均值不是理想的选择。
我是一名大二学生,也是大学的研究助理。这是我目前遇到的问题的简化版本。任何建议将不胜感激。
更新:感谢FEI Xiang和Oklar的帮助。是的,请记住上一个总和是时间进行计算的唯一方法。但是,由于随机生成器输出文件正在不断变化,并且将新输出附加到旧输出上,因此我不确定如何有效地获取最新数据。
您不需要计算每次添加的所有数字,您只需要将最后一个添加到一个和变量中,然后除以生成的数字。<<<<<<<<<<<<<<
说你有:
1
2
3
4
5
sum变量为15。如果您除以5的数量数量,您将获得3的预期输出。6,您最终要获得4个。
for循环中的i可以用作生成数字量的计数器。伪代码:
sum += randomInt();
avg = sum/i;
编辑:我看到您每次在帖子中的for循环中打开和关闭文件。这可以在循环外完成,这将加快速度。如果我正确理解您,您的任务是生成一个随机数,然后从上一个数字中计算平均值,最后将其附加到文本文件中?如果是这样,您就可以了。
int i_random;
int avg;
int sum = 0;
myfile.open("avg.txt",fstream::app);
for (int i = 1; i < max + 1; ++i)
{
i_random = random_int();
sum += i_random;
avg = sum/i;
myfile << avg << "n";
this_thread::sleep_for(chrono::milliseconds(100));
}
myfile.close();
有关其他操作员,请参见http://www.cplusplus.com/doc/tutorial/files/。查看seek的cppreference,并告诉您是否要跳过文件中的位置。
相关文章:
- 使来自线程的数据流对所有其他线程都可读
- 什么是 DirectX 9 中的数据流?
- 将数据流到字节数组中
- 使用 Python 连接到数据流
- 使用 N-API 将数据流式传输到 Node.js C++ 插件中
- 是否存在与将数据流式传输到 c++ 异常类相关的任何危险
- 如何将数据流添加到具有FFmpeg和C / C++的MXF(使用mpeg2video)文件中
- C 中的数据流
- 从QTcpSocket上的数据流中连续运行复杂算法的最佳Qt线程解决方案是什么
- 将数据流式传输到 protobuf 解析器 c++
- 用于大型数据流的通货紧缩压缩算法
- 为什么我的数据流在20或30行后开始重复
- 使用QtMultedia播放自定义avi数据流
- 数据流 Qt 到标准 c++ 代码
- 在数据流处理程序中获取segfault
- 如果缓冲区由数据流填充,则 C++ boost async_read_some被缓冲区阻止
- Mac 上高带宽数据流最有效的进程间通信方法是什么?
- 如何将数据流从 std::cout 发送到 gnuplot
- 将数据流写入磁盘的最快方法
- 将数据流式传输到 std::vector<double> 崩溃