C语言求教 一个算概率的问题
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/18 20:13:43
C语言求教 一个算概率的问题
今天在做数学题,儿童节,有3种卡片,装入食品袋面.现知道集全3种才能中奖,现买5袋,问中奖概率是多少,我就想用C语言编个程来算,总共是有243种可能,怎么判断5次购买后是否中奖?如何实现用C语言实现这样的语句?
今天在做数学题,儿童节,有3种卡片,装入食品袋面.现知道集全3种才能中奖,现买5袋,问中奖概率是多少,我就想用C语言编个程来算,总共是有243种可能,怎么判断5次购买后是否中奖?如何实现用C语言实现这样的语句?
大家的好像都很专业.如果我没记错,这是一个高考数学题,你应该是个高中生吧.
可以用深度优先搜索(递归回溯),这样比较简单.
大致的思路是这样
用一个数组 f[6],f[1]~f[5]代表那5袋方便面.
用递归或者循环的方法生成123 放到这5个位置(就是穷举这total(=243)种可能)
然后写一个判断累计函数judge()
每生成一个排列就送到judge去判断一次
如果满足条件则ok加1
最后给出概率百分数 float percent = ok*100.0/total
//--------------------------------
递归的代码我已经写好了.通过适当修改相关参数(把方便面袋数量和卡片种类设置为变量提示用户输入),可以计算不同方便面袋数和卡片种类数的中奖概率.如果使用循环的话针对这个题需要5重循环,我想你应该会,我就不写了.
//--------------------------------
放代码:
//--------------------------------
#include
#include
//----------------------
int f[6],ok,total;
void judge()
{ int card[4]={0},i; //card[]表示是否有第i张卡片
for(i=1;i
再问: 上面你的代码有点问题啊 void put(int nxi)//往第nxi袋方便面袋里放卡片 { if(nxi == 6) { total++; judge(); return; //回溯 } int i; for(i=1;i
可以用深度优先搜索(递归回溯),这样比较简单.
大致的思路是这样
用一个数组 f[6],f[1]~f[5]代表那5袋方便面.
用递归或者循环的方法生成123 放到这5个位置(就是穷举这total(=243)种可能)
然后写一个判断累计函数judge()
每生成一个排列就送到judge去判断一次
如果满足条件则ok加1
最后给出概率百分数 float percent = ok*100.0/total
//--------------------------------
递归的代码我已经写好了.通过适当修改相关参数(把方便面袋数量和卡片种类设置为变量提示用户输入),可以计算不同方便面袋数和卡片种类数的中奖概率.如果使用循环的话针对这个题需要5重循环,我想你应该会,我就不写了.
//--------------------------------
放代码:
//--------------------------------
#include
#include
//----------------------
int f[6],ok,total;
void judge()
{ int card[4]={0},i; //card[]表示是否有第i张卡片
for(i=1;i
再问: 上面你的代码有点问题啊 void put(int nxi)//往第nxi袋方便面袋里放卡片 { if(nxi == 6) { total++; judge(); return; //回溯 } int i; for(i=1;i