#include<iostream.h>

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