Я пытаюсь отобразить случайное число в массиве из 5 целых чисел. У меня есть распределение int от 0 до размера массива. Но всякий раз, когда я собираюсь выводить цифры, иногда я получаю значение мусора. Почему это происходит?Почему моя программа случайных чисел выводит мусор?
#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'. Используйте 'dist (0, sizeof (a)/sizeof (* a) - 1)', так как распределение переходит от '0' к' X' не '0' к одному перед' X'. –