所在位置:主页 > 程序语言 > C语言求教 一个算概率的问题

C语言求教 一个算概率的问题

发布时间:2023-11-01 23:42来源:www.sf1369.com作者:宇宇

一、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<=5;i++) card[f[i]]++; for(i=1;i<=3;i++) if(!card[i]) return; ok++; }//------------------------- void put(int nxi)//往第nxi袋方便面袋里放卡片 { if(nxi == 6) { total++; judge(); return; //回溯 } int i; for(i=1;i<=3;i++) { f[nxi] = i; put(nxi+1);//递归 } }//------------------------- main() { float per; char c = '%'; put(1); per = 100.0 * ok/total; printf(概率为:%d/%d\n,ok,total); printf(百分数: %.2f%c,per,c); getch(); }//------------------------- 运行结果: 150/243 61.73% 当然,你还可以加一个约分函数使得结果为最简分数。这里就不再讨论了。

二、急 知道出现概率用C语言编写随机数

数据不全啊. 另外, A~O的概率密度先算出来, 像1~9那样的格式就行了

然后从概率密度换算到分布率, 再用C随机就可以了

三、如何用c语言随机生成一个概率

具体代码如下: #include #include #include //用到了time函数 int main() { int i,number; srand((unsigned) time(NULL)); //用时间做种,每次产生随机数不一样 for (i=0; i

四、急!!!用C语言编写按概率生成随机数!!!

基本想法:

2维取数

y 向 为 概率

x 向 为 0 - 9:

输出 落入xy 条形区的点子。

#include <stdio.h>

#include <stdlib.h>

void main(void)

{

float y[]={0.07,0.14,0.07,0.14,0.10,0.10,0.80,0.90,0.13, 0.80};

float s;

int i,j,k;

float rd_y;

int rd;

double r;

srand((unsigned)time(NULL));

s=y[0];

for(i=0;i<10;i++) if (y[i] > s) s = y[i];

for (i=0;i<100;i++)

{

r = ( (double)rand() / ((double)(RAND_MAX)+(double)(1)) );

rd_y = r * s;

r = ( (double)rand() / ((double)(RAND_MAX)+(double)(1)) );

rd = (int) (r * 10.0);

if (rd_y <= y[rd]) printf(%d\n,rd);

};

exit(0);

}

rd_y 的计算,请你核对一下,范围是不是 0 到 0.9

我没有精确核对。

五、制作一个指定概率(例如10%)的抽签系统.(使用C语言编写程序)

#include #include void main() { int r,p; char buf; printf(请输入概率:(举例:概率10%,输10)\n); scanf(%d,&p); scanf(%c,&buf); while(1) { r=rand()%10*10/p; if(r==0) { printf(恭喜中奖!); } else { printf(不中奖!); } printf(\n); printf(按回车键继续!\n); scanf(%c,&buf); if(buf!='\n') break; } }