为什么我的数字超出了我通过的范围?

时间:2013-10-07 03:34:32

标签: c++ c++11

我是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;

 }




 }

1 个答案:

答案 0 :(得分:8)

看起来问题出在最后一行cout << pos1 << "\n" << pos2;(这里你忘了添加<< "\n")。因此,如果您的程序打印出四个数字(例如22,23,24,25),您将看到以下文字:

22
2324
25

因此,数字2324将超出您的范围,但实际上它是两个数字的连接。