#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
	int t, x, trial, RWer, RWer_counter[101]; 
	double RV, p, p0, Q[101]; 
	
	srand((unsigned int)time(NULL)); 
	
	p = 0.3; 
	p0 = 0.1; 
	
	// 場所xにいるランダムウォーカーの数（初期化）
	for (x = 0; x <= 100; x++)	RWer_counter[x] = 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 < p0)  RWer = RWer; 
				else          RWer++; 
			}
			else
			{
				if (RV < p)  RWer--; 
				else         RWer++; 
			}
		}
		
		// ランダムウォーカーが到達した場所のカウンターを1つ増やす
		RWer_counter[RWer]++; 
	}
	
	// 場所xにいるランダムウォーカーの相対頻度
	for (x = 0; x <= 100; x++)
	{
		Q[x] = (double)RWer_counter[x] / 500; 
	}
	
	for (x = 0; x <= 100; x++)	printf("Q(%d) = %f\n", x, Q[x]); 

	return 0; 
}
