扔n个骰子,向上面的数字之和为S,给定n,请列出所有可能的S值及相应的概率。

博客围绕扔n个骰子的问题展开,给定n,需列出向上面数字之和S的所有可能值及相应概率,并给出了C语言代码及运行结果。

题目: 扔n个骰子,向上面的数字之和为S,给定n,请列出所有可能的S值及相应的概率。

C语言代码:

#include<stdio.h>
#define MAXVALUE 6

int dice(int n){
	if(n<1){
		return -1;		
	}
	double arr[2][n*MAXVALUE+1];
	int flag = 0;
	int i;
	for(i =1;i<=MAXVALUE;i++){
		arr[flag][i]=1.0/6;
	}
	for(i=MAXVALUE+1;i<=MAXVALUE*n;i++){
		arr[flag][i]=0.0;
	}
	int k,j;
	for(k=2;k<=n;k++){
		for(i = 0;i<k*MAXVALUE;i++){
			arr[1-flag][i]=0.0;
		}
		for(i = k;i<=MAXVALUE*k;i++){
			for(j=1;j<=MAXVALUE&&j<=i;j++){
				arr[1-flag][i]+=arr[flag][i-j]/6;
			}
		}
		flag = 1-flag;
	}
	for(i =n;i<MAXVALUE*n+1;i++){
		printf("s = %d,probability = %f\n",i,arr[flag][i]);
	}
}
int main(){
	
	int f;
	printf("请输入扔的筛子数:");
	int n;
	scanf("%d",&n);
	printf("S所有可能的情况如下:\n");
	f=dice(n);
	if(f==-1){
		printf("失败");
	}
	return 0;
}

 运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值