为什么我的随机数程序输出垃圾
Why does my random number program output garbage?
我试图在5 int的数组中显示一个随机数。我有一个从0到数组大小的int分布。但每当我输出数字时,有时我会得到一个垃圾值。为什么会发生这种情况?
#include <iostream>
#include <random>
int main()
{
int a[5] = { 1, 2, 3, 4, 5 };
std::random_device seed;
std::default_random_engine rand(seed());
std::uniform_int_distribution<int> dist(0, sizeof(a)/sizeof(*a));
for (int i = 0; i < 100; ++i)
std::cout << a[dist(rand)] << "n";
}
数组索引是基于零的。对于5个元素的数组,有效索引为0..4
。您的分布返回的值在0..5
范围内,是问题的根源。
由于未定义的行为-您正在访问数组a
边界之外的元素。由于分布从0
到X
,而不是从0
到X
之前的一个,所以应该这样构造它
std::uniform_int_distribution<int> dist(0, sizeof(a)/sizeof(*a) - 1);
相关文章:
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 显示错误输出的简单数组排序程序
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 如何从Windows应用程序输出到标准?
- 我写了一个C++程序来模拟Enigma机器.我没有得到输出
- 如何使用C++读取另一个程序中的源代码输出
- 为什么我的C++程序的程序集输出充满了 .ascii,没有汇编代码?
- 为什么这个程序的输出不如预期
- 在由Sublime文本3编译后在cmd上显示Java程序输出
- C++ 每次运行程序时我都会"nan"输出的问题
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 而循环:简单的除法程序输出零,不明白为什么
- 如何在 html 页面中插入 cgi 应用程序的输出?
- C 中的输出程序无明显的原因是白色的
- C++:更改简单输出程序的字体
- C++ 简单的输入/输出程序 + 枚举器
- C++字母等效数字代码输出程序
- 编译输出程序集