C++ 随机坐标并禁用下一个随机集的移动

C++ 随机坐标并禁用下一个随机集的移动,c++,C++,我只是想知道我编码的是对的还是走对了路。非常感谢您的指点和帮助 我需要写一个代码,可以随机通过一组坐标,然后当坐标已经从第一组随机选择它将被禁用,或者程序将不得不再次随机值 我已经编写了一些代码,我只是不知道如何检查它是否正确,因为我在这里处理的是随机数 #include <cstdlib> #include <iostream> using namespace std; int x; int y; void random(), check(), rad(); con

我只是想知道我编码的是对的还是走对了路。非常感谢您的指点和帮助

我需要写一个代码,可以随机通过一组坐标,然后当坐标已经从第一组随机选择它将被禁用,或者程序将不得不再次随机值

我已经编写了一些代码,我只是不知道如何检查它是否正确,因为我在这里处理的是随机数

#include <cstdlib>
#include <iostream>

using namespace std;

int x;
int y;
void random(), check(), rad();
const int numRows = 10;
const int numCols = 10;
bool moveflag [numRows][numCols];
string move [numRows][numCols] = 
{
       {"A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1", "I1", "J1"}, //row1
       {"A2", "B2", "C2", "D2", "E2", "F2", "G2", "H2", "I2", "J2"}, //row2
       {"A3", "B3", "C3", "D3", "E3", "F3", "G3", "H3", "I3", "J3"}, //row3
       {"A4", "B4", "C4", "D4", "E4", "F4", "G4", "H4", "I4", "J4"}, //row4
       {"A5", "B5", "C5", "D5", "E5", "F5", "G5", "H5", "I5", "J5"}, //row5
       {"A6", "B6", "C6", "D6", "E6", "F6", "G6", "H6", "I6", "J6"}, //row6
       {"A7", "B7", "C7", "D7", "E7", "F7", "G7", "H7", "I7", "J7"}, //row7
       {"A8", "B8", "C8", "D8", "E8", "F8", "G8", "H8", "I8", "J8"}, //row8
       {"A9", "B9", "C9", "D9", "E9", "F9", "G9", "H9", "I9", "J9"}, //row9
       {"A10", "B10", "C10", "D10", "E10", "F10", "G10", "H10", "I10", "J10"}
};

 int main(int argc, char *argv[])
{
 for (int row = 0; row < numRows; ++row)
{
    for (int col = 0; col < numCols; ++col)
        cout << move[row][col] << "\t";
        }

random();



system("PAUSE");
return EXIT_SUCCESS;
}

void rad(){
 cout << endl << move[y][x] <<endl;
moveflag[y][x] = true;
}

void random(){
 x = rand() % 10;
y = rand() % 10;
check();
if(!moveflag[y][x])
{rad();}
}

void check(){
 if (moveflag[y][x])
 {random();}
 }
#包括
#包括
使用名称空间std;
int x;
int-y;
void random(),check(),rad();
常数int numRows=10;
常量int numCols=10;
bool-moveflag[numRows][numCols];
字符串移动[numRows][numCols]=
{
{“A1”、“B1”、“C1”、“D1”、“E1”、“F1”、“G1”、“H1”、“I1”、“J1”},//第1行
{“A2”、“B2”、“C2”、“D2”、“E2”、“F2”、“G2”、“H2”、“I2”、“J2”},//第2行
{“A3”、“B3”、“C3”、“D3”、“E3”、“F3”、“G3”、“H3”、“I3”、“J3”},//第3行
{“A4”、“B4”、“C4”、“D4”、“E4”、“F4”、“G4”、“H4”、“I4”、“J4”},//第4行
{“A5”、“B5”、“C5”、“D5”、“E5”、“F5”、“G5”、“H5”、“I5”、“J5”},//第5行
{“A6”、“B6”、“C6”、“D6”、“E6”、“F6”、“G6”、“H6”、“I6”、“J6”},//第6行
{“A7”、“B7”、“C7”、“D7”、“E7”、“F7”、“G7”、“H7”、“I7”、“J7”},//第7行
{“A8”、“B8”、“C8”、“D8”、“E8”、“F8”、“G8”、“H8”、“I8”、“J8”},//第8行
{“A9”、“B9”、“C9”、“D9”、“E9”、“F9”、“G9”、“H9”、“I9”、“J9”},//第9行
{“A10”、“B10”、“C10”、“D10”、“E10”、“F10”、“G10”、“H10”、“I10”、“J10”}
};
int main(int argc,char*argv[])
{
对于(int行=0;行这种方法的问题是,随着算法的发展,随机数的拒绝率将稳步增加

更好的方法是对输入坐标进行洗牌,然后依次读取洗牌后的集合


使用
std::random\u shuffle
来做这件事。

如果你想检查你的代码,你应该发布到1:你能使用C++11或更高版本吗?2:复制输入数据有问题吗?@NathanOliver哦,这里有一个单独的地方。对不起,我只是这个网站的新成员。@Neijwiert现在你提到了它。实际上我对它一无所知我甚至不知道我正在使用的C++版本。我只知道我用DEV-C++作为我的想法。绝对可以。你甚至可以把你最喜欢的生成器传递给STD::RealthySuffle。读了你的评论后,我研究了随机变量的洗牌,我就是想不出我是怎么用这个2D数组的。一段时间以来,我看到所有的例子同时输出所有的乱序数字。