Почему я получаю числа вне диапазона, который я передал?

0

Я новичок в c++, и я не понимаю, почему цифры находятся за пределами диапазона. я
прокомментировал, где я думал, что вы начинаете диапазон

#include <vector>
#include <iostream>
#include <random>
#include <time.h>

using namespace std;
using std::vector;

int main()
{

 vector<int> deck;
 default_random_engine eng(time(0));

Я думал, что здесь я указываю диапазон случайных чисел, но вместо этого я получаю числа за пределами этого диапазона

 uniform_int_distribution<int> dis(0, 51);

 int pos1;
 int pos2;
 int num1;
 int num2;
 int i;
 int n;
 int m;

 for (i = 1; i < 53; i++)
 {
     deck.push_back(i);

 }

 pos1 = dis(eng);
 pos2 = dis(eng);

 num1 = deck.at(pos1);
 num2 = deck.at(pos2);


 for (n = 0; n < 100; n++)
 {
     pos1 = dis(eng);
     pos2 = dis(eng);

     cout << pos1 << "\n" << pos2;

 }




 }
Теги:
c++11

1 ответ

8
Лучший ответ

Похоже, проблема в последней строке cout << pos1 << "\n" << pos2; (здесь вы забыли добавить << "\n"). Поэтому, если ваша программа печатает четыре номера (например, 22, 23, 24, 25), вы увидите следующий текст:

22
2324
25

Таким образом, номер 2324 будет за пределами вашего диапазона, но на самом деле это конкатенация двух чисел.

  • 0
    Вао, хороший улов!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню