[ create a new paste ] login | about

Link: http://codepad.org/W2UP5n8C    [ raw code | output | fork ]

C++, pasted on Jul 5:
/*氏名*/


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

#define sainome 6
#define saikorokosuu 10
#define itinosainome 1

int main(void)
{
	int num,C[4][11],C_set,conf,Nkai,i;
/*
int num;
int C[4][11];





int sai_nage
と同義
*/	



/*シミュレーション回数を10^2~10^4で計算*/
	int saikoro_saidai[4] = {
					100,
					1000,
					10000,
					100000,
				};
	int sai_nage;

/* 10C0*(5/6)^10~10C10*(1/6)^10のそれぞれの真の値を定義 */
	double sinn_no_atai[11] = 
				{
					0.16150558,
					0.32301117,
					0.29071005,
					0.15504536,
					0.05426588,
					0.01302381,
					0.00237064,
					0.00024807,
					0.00001866,
					0.00000083,
					0.00000002
				};

	for(sai_nage = 0; sai_nage < 4; sai_nage++)
	{
		for(C_set = 0; C_set < 11; C_set++)
		{
			C[sai_nage][C_set] = 0;
		}
	}

	for(sai_nage = 0; sai_nage < 4; sai_nage++)
	{
		for(Nkai = 0; Nkai < saikoro_saidai[sai_nage]; Nkai++)
		{
			conf = 0;

/*変数numをrand関数により乱数として発生させる。そのため、#include <stdlib.h>を*/
/*もし、ランダムな値が1であったとき、confを増加*/
		for(i = 0; i < saikorokosuu; i++)
		{
			num = rand() %6 + 1;
			if(num == itinosainome){ conf++; }
		}

		if (conf == 0) {
			C[sai_nage][0]++;
		}
		else if (conf == 1) {
			C[sai_nage][1]++;
		}	
		else if (conf == 2) {
			C[sai_nage][2]++;
		}
		else if (conf == 3) {
			C[sai_nage][3]++;
		}
		else if (conf == 4) {
			C[sai_nage][4]++;
		}
		else if (conf == 5) {
			C[sai_nage][5]++;
		}
		else if (conf == 6) {
			C[sai_nage][6]++;
		}
		else if (conf == 7) {
			C[sai_nage][7]++;
		}
		else if (conf == 8) {
			C[sai_nage][8]++;
		}
		else if (conf == 9) {
			C[sai_nage][9]++;
		}
		else if (conf == 10) {
			C[sai_nage][10]++;
		}
	}
}

	
printf("	X/N		10^2回		10^3回		10^4回		10^5回		真値	\n\n");

	for(C_set = 0; C_set < 11; C_set++)
	{
		printf("	%2d個の確率	%8.4f%%	%8.4f%%	%8.4f%%	%8.4f%%	%8.4f%%	\n"
				,C_set
				, (double)C[0][C_set]/saikoro_saidai[0]*100.0
				, (double)C[1][C_set]/saikoro_saidai[1]*100.0
				, (double)C[2][C_set]/saikoro_saidai[2]*100.0
				, (double)C[3][C_set]/saikoro_saidai[3]*100.0
				, sinn_no_atai[C_set]*100 );

		printf("			%8.4f%%	%8.4f%%	%8.4f%%	%8.4f%%  \n"
				, (double)C[0][C_set]/saikoro_saidai[0]*100.0 - sinn_no_atai[C_set]*100
				, (double)C[1][C_set]/saikoro_saidai[1]*100.0 - sinn_no_atai[C_set]*100
				, (double)C[2][C_set]/saikoro_saidai[2]*100.0 - sinn_no_atai[C_set]*100
				, (double)C[3][C_set]/saikoro_saidai[3]*100.0 - sinn_no_atai[C_set]*100 );
	}

	return 0;
}

		


Output:
	X/N		10^2回		10^3回		10^4回		10^5回		真値	

	 0個の確率	 16.0000%	 16.9000%	 16.1300%	 16.1950%	 16.1506%	
			 -0.1506%	  0.7494%	 -0.0206%	  0.0444%  
	 1個の確率	 32.0000%	 30.9000%	 32.4100%	 32.2040%	 32.3011%	
			 -0.3011%	 -1.4011%	  0.1089%	 -0.0971%  
	 2個の確率	 27.0000%	 31.3000%	 29.6800%	 29.1290%	 29.0710%	
			 -2.0710%	  2.2290%	  0.6090%	  0.0580%  
	 3個の確率	 19.0000%	 14.5000%	 14.8800%	 15.5160%	 15.5045%	
			  3.4955%	 -1.0045%	 -0.6245%	  0.0115%  
	 4個の確率	  2.0000%	  4.5000%	  5.5500%	  5.4040%	  5.4266%	
			 -3.4266%	 -0.9266%	  0.1234%	 -0.0226%  
	 5個の確率	  2.0000%	  1.6000%	  1.2000%	  1.3110%	  1.3024%	
			  0.6976%	  0.2976%	 -0.1024%	  0.0086%  
	 6個の確率	  2.0000%	  0.2000%	  0.1200%	  0.2100%	  0.2371%	
			  1.7629%	 -0.0371%	 -0.1171%	 -0.0271%  
	 7個の確率	  0.0000%	  0.1000%	  0.0300%	  0.0280%	  0.0248%	
			 -0.0248%	  0.0752%	  0.0052%	  0.0032%  
	 8個の確率	  0.0000%	  0.0000%	  0.0000%	  0.0030%	  0.0019%	
			 -0.0019%	 -0.0019%	 -0.0019%	  0.0011%  
	 9個の確率	  0.0000%	  0.0000%	  0.0000%	  0.0000%	  0.0001%	
			 -0.0001%	 -0.0001%	 -0.0001%	 -0.0001%  
	10個の確率	  0.0000%	  0.0000%	  0.0000%	  0.0000%	  0.0000%	
			 -0.0000%	 -0.0000%	 -0.0000%	 -0.0000%  


Create a new paste based on this one


Comments: