首页 > 其他 > 详细

把n个色子扔在地上,所有色子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。

时间:2014-04-22 10:57:10      阅读:530      评论:0      收藏:0      [点我收藏+]
#include "stdafx.h"
#include <string.h>
 
// 这是一个掷色子的程序.
 
// 假设有六个色子同时掷出,求各个色子数值之和的概率 
// 六个色子之和最小是6,最大是36。
// 可以分配一个容量为31的数组Sum[31],用来存放每个求和出现的次数。
// 6出现的次数应该存放在Sum[0]中,36出现的次数应该存放在Sum[30]中。
 
 
void Sum(int nSievesint nTotalSievesint summaryintresult)
{
	if(nSieves == 0)
	{
		result[summary - nTotalSieves] ++;
		return;
	}
	else
	{
		for(int index = 1; index <= 6; index++)
		{
			summary += index;
			nSieves --;
 
			Sum(nSievesnTotalSievessummaryresult);
 
			nSieves++;
			summary -= index;
		}
	}
}
 
void ThrowSieves(int n)
{
	if(n <= 0)
	{
		return;
	}
	else
	{
		int nMinSum = 1*n, nMaxSum = 6*n, size = nMaxSum - nMinSum + 1;
		int* result = new int[nMaxSum - nMinSum + 1];
		memset(result, 0, size*sizeof(int));
 
		int summary = 0;		
		Sum(nn, summary, result);
 
		int nTotal = 0, index = 0;
		for(index = 0; index < size; index++)
		{
			nTotal += result[index];
		}
 
		for(index = 0; index < size; index++)
		{
			printf("Sum=%d, Percentage=%lf\n", index+n, (double)result[index]/(double)nTotal);
		}
		delete[] result;
	}
}
 
int _tmain(int argc_TCHARargv[])
{
 
	ThrowSieves(1);
 
	char exit;
	scanf_s("%c", &exit);
	return 0;
}

把n个色子扔在地上,所有色子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。,布布扣,bubuko.com

把n个色子扔在地上,所有色子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。

原文:http://www.cnblogs.com/bsqdevspace/p/3679421.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!