~cpp 
#include <iostream>
#include <ctime>
using namespace std;

void main()
{
	srand((unsigned)time(NULL));
	int size;
	cout <<"맵의 크기를 결정해주세요>> ";
 	cin>> size;
	int MAX=size-1;

	int spawnX = rand()%size;
	int spawnY = rand()%size;

	int **data = new int*[size];
	for(int i=0;i<size;i++) {
		data[i] = new int[size];
	}
	for(int k=0;k<size;k++)
		{
			for(int j=0;j<size;j++)
				data[k][j]=0;
		}

	data[spawnY][spawnX]++;

	int out = 0;

	while(out==0)
	{
		out = 1;
		int move= rand()%8;

		if (move==0)
		{
			spawnY--;
			spawnX--;
			if (spawnX>=0 && spawnY>=0)
				data[spawnY][spawnX]++;
			else
			{
				spawnY++;
				spawnX++;
			}
		}
		else if (move==1)
		{
			spawnY--;
			if (spawnY>=0)
				data[spawnY][spawnX]++;
			else
				spawnY++;
		}
		else if (move==2)
		{
			spawnY--;
			spawnX++;
			if (spawnY>=0 && spawnX<=MAX)
				data[spawnY][spawnX]++;
			else{
				spawnY++;
				spawnX--;
			}
		}
		else if (move==3){
			spawnX++;
			if (spawnX<=MAX)
				data[spawnY][spawnX]++;
			else{
				spawnX--;
			}
		}
		else if (move==4){
			spawnX++;
			spawnY++;
			if (spawnX<=MAX && spawnY<=MAX)
				data[spawnY][spawnX]++;
			else{
				spawnX--;
				spawnY--;
			}
		}
		else if (move==5)
		{
			spawnY++;
			if (spawnY<=MAX)
				data[spawnY][spawnX]++;
			else
				spawnY--;
		}
		else if (move==6)
		{
			spawnY++;
			spawnX--;
			if (spawnX>=0 && spawnY<=MAX)
				data[spawnY][spawnX]++;
			else{
				spawnY--;
				spawnX++;
			}
		}
		else if (move==7)
		{
			spawnX--;
			if (spawnX>=0)
				data[spawnY][spawnX]++;
			else{
				spawnX++;
			}
		}
		for(k=0;k<size;k++)
		{
			for(int j=0;j<size;j++)
			{
				if(data[k][j]==0){
					out=0;
					break;
				}
			}
		}
	}

	for(k=0;k<size;k++)
	{
		for(int j=0;j<size;j++){
			cout << data[k][j]<<"\t";
		}
		cout<<endl;
	}
	int p=0;
	for(k=0;k<size;k++)
		{
			for(int j=0;j<size;j++)
				p+=data[k][j];
		}
	cout <<endl<<p<<endl;

	for(i;i<size;i++)
		delete [] data;

}

Retrieved from http://wiki.zeropage.org/wiki.php/RandomWalk/동기
last modified 2021-02-07 05:27:50