为什么最终结果有重复?是随机数的问题吗?该如何解决?
#include
#include
#include
using namespace std;
int main()
{
int Z = 0;
while (Z != 10000)
{
int i = 0,R=0;
int xa = 1, ya = 16, xb = 16, yb = 1;
int Xstep, Ystep;
while (R != 1)
{
i = i + 1;
struct timeb timeSeed;
ftime(&timeSeed);
srand(timeSeed.time * 1000 + timeSeed.millitm); // milli time
unsigned int crand = rand();
Xstep = rand() % 3;
Ystep = rand() % 3;
switch (Xstep)
{
case 0:xa = xa + 1;break;
case 1:xa = xa - 1;break;
case 2:ya = ya + 1;break;
case 3:ya = ya - 1;break;
}
switch (Ystep)
{
case 0:xb = xb + 1;break;
case 1:xb = xb - 1;break;
case 2:yb = yb + 1;break;
case 3:yb = yb - 1;break;
}
switch (xa)
{
case 17:xa = xa - 16;break;
case 0:xa = xa + 16;break;
}
switch (ya)
{
case 17:ya = ya - 16;break;
case 0:ya = ya + 16;break;
}
switch (xb)
{
case 17:xb = xb - 16;break;
case 0:xb = xb + 16;break;
}
switch (yb)
{
case 17:yb = yb - 16;break;
case 0:yb = yb + 16;break;
}
if (xa == xb && ya == yb)
{
R = R + 1;
cout << "运行次数=" << i << endl;
}
}
Z = Z + 1;
}
}