0
我試圖在5個整數的數組中顯示一個隨機數。我有一個從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";
}
由於未定義的行爲 - 您正在訪問數組'a'範圍外的元素。由於分配從'0'到'X'而不是'0'到'X'之前的一個,所以使用'dist(0,sizeof(a)/ sizeof(* a) - 1)'。 – 2014-11-02 19:50:18