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

Why am I getting numbers outside the range I passed?

本文关键字:范围 数字 为什么      更新时间:2023-10-16

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


 }

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

22
2324
25

所以数字 2324 将超出您的范围,但实际上它是两个数字的串联。