#include<iostream.h>

void main(void)
{
	int t,x,y,trial,RWer_x,RWer_y,RWer_counter[201][201];
	double RV,Q[201][201];
	
	srand((unsigned int)time(NULL));
	
	//場所(x,y)にいるランダムウォーカーの数（初期化）
	for(x=-100;x<=100;x++)
	{
		for(y=-100;y<=100;y++)	RWer_counter[100+x][100+y]=0;
	}
	
	//ランダムウォーカー500個をそれぞれシミュレーション
	for(trial=0;trial<500;trial++)
	{
		RWer_x=0;
		RWer_y=0;
		
		for(t=0;t<100;t++)
		{
			RV=(double)rand()/(double)(RAND_MAX+1);
			
			if(RV<0.25)	RWer_y++;
			else if(RV<0.5)	RWer_y--;
			else if(RV<0.75)	RWer_x--;
			else	RWer_x++;
		}
		
		//ランダムウォーカーが到達した場所のカウンターを1つ増やす
		RWer_counter[100+RWer_x][100+RWer_y]++;
	}
	
	//場所(x,y)にいるランダムウォーカーの相対頻度
	for(x=-100;x<=100;x++)
	{
		for(y=-100;y<=100;y++)
		{
			Q[100+x][100+y]=(double)RWer_counter[100+x][100+y]/500;
		}
	}
	
	for(x=-100;x<=100;x++)
	{
		for(y=-100;y<=100;y++)
		{
			printf("Q(%d,%d)=%f\n",x,y,Q[100+x][100+y]);
		}
	}
}