『壹』 【c語言】關於概率計算的方法
我想是因為for (i=1;b>=1;i++)這一句無效。
前面b=0,循環條件是b>=1,所以不循環的。
另外b=b+0.1*pow(0.9,i-1);這句的0.1後面應該加上f,否則類型不對。
這個是改動過的代碼
#include <stdio.h>
#include <math.h>
int main()
{
int i;
long double b;
b=0;
for (i=1;b<=1;i++)
{
b=b+0.1f*pow(0.9,i-1);
}
printf("%d ", i);
return 0;
}
時間有些晚了,答題有點倉促,不知道能不能行,如果出現問題,希望海涵。
『貳』 c語言求概率
這是典型的古典概型,直接用窮舉法計算即可。
計算思路是遍歷1到10共10個數的所有組合(用goNext函數),統計出組合總數count與7個數之和等於20的組數successNumber,這兩個數的商successNumber/count就是所求的概率。
計算結果為:
總次數: 10000000, 成功次數: 26544, 概率: 0.0026544
程序可以如下實現:
#include <stdio.h>
int data[7];
int goNext()
{
int i;
for ( i = 0; i < 7 && ++data[i] > 10; ++i ) data[i] = 1;
if ( i == 7 ) return 0;
return 1;
}
void main()
{
int i, m;
double p;
long count = 0, successNumber = 0;
for ( i = 0; i < 7; ++i) data[i] = 1;
do
{
++count;
for ( i = 0, m = 0; i < 7; ++i ) m += data[i];
if ( 20 == m ) ++ successNumber;
} while ( goNext() );
p = (double) successNumber / (double) count;
printf("總次數: %d, 成功次數: %d, 概率: %.7lf\n", count, successNumber, p);
}
『叄』 如何用c語言隨機生成一個概率
隨機生成一個數倒是可以,概率的話,直接用1除以生成的數就可以了
『肆』 C語言 隨機數 概率
計算機里的取隨機數函數是均勻分布的隨機數。
0.0005的概率,相當於2000個數里取一個。
所以我們可以 在0到1999范圍里取隨機數,如果取到數值 1000,我們就得1(並響鈴),否則得0。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
void main()
{
long int i,y;
double x, r, M = 2000.0;
srand((unsigned)time(NULL));
for (i=0;i<5000;i++) // 取5000個
{
r = ( (double)rand() / ((double)(RAND_MAX)+(double)(1)) );
x = (r * M);
y = (long int) x;
if (y == 1000) {
printf("1 ");printf("\007"); // 如果得1,就響鈴!
} else printf("0 ");
};
}
『伍』 C語言中如何計算概率,為什麼計算不了
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main (){
int a,b,c,i;
int j=0;
int sum=0;
double k=0.0;
srand((unsigned int) time(NULL));
for(i=1;i<=500;i++){
a=rand()%7+1;
b=rand()%7+1;
c=rand()%7+1;
printf("所抽到的三個球為:%d%d%d\n",a,b,c);
sum=a+b+c;
if (sum>=15){j++;}
k=j/500.0;
}
printf("\n%lf\n",k);
return 0;
}
你看這個程序,可以運行出來K的值。你那個程序就是在k=j/500這里出問題了,以為k定義的是double型,所以要強制轉換一下改成k=j/500.0或者k=(double)j/500就行了,以後遇到這個問題要注意
『陸』 c語言 求隨機數分布概率
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<stddef.h>
intmain(){
floata,sum;
inti,j,n,m;
//100次求0-1之間的隨機數之和在0-11-2之間的概率分布次數
for(i=0;i<100;i++){
srand(time(NULL));
for(j=0;j<10;j++){
a=(float)rand()/RAND_MAX;
sum+=a;
}
if(sum>=0&&sum<=1)
n++;
}
if(sum>1&&sum<=2){
m++;
}
}
printf("01=%d12=%d ",n,m);
return0;
}
『柒』 C語言中如何表示概率
現成的函數沒有,可以通過產生隨機數實現概率。
srand((unsigned)time(NULL));
int m,r=0;
m=rand()%10;
if(m==1||m==2||m==3||m==4||m==5||m==6||m==7)
{
r=r+1;
}
這段代碼中,執行r=r+1的概率就是0.7
希望可以幫到你
『捌』 如何用C語言實現求概率期望
用一個數組存放這100個概率。然後隨機生成N個0~99的數。以隨機生成的數為下標讀取數組里的數。然後相乘。。
『玖』 C語言求教 一個算概率的問題
呵呵。大家的好像都很專業。如果我沒記錯,這是一個高考數學題,你應該是個高中生吧。
可以用深度優先搜索(遞歸回溯),這樣比較簡單。
大致的思路是這樣
用一個數組 f[6],f[1]~f[5]代表那5袋方便麵。
用遞歸或者循環的方法生成123 放到這5個位置(就是窮舉這total(=243)種可能)
然後寫一個判斷累計函數judge()
每生成一個排列就送到judge去判斷一次
如果滿足條件則ok加1
最後給出概率百分數 float percent = ok*100.0/total
//--------------------------------
遞歸的代碼我已經寫好了。通過適當修改相關參數(把方便麵袋數量和卡片種類設置為變數提示用戶輸入),可以計算不同方便麵袋數和卡片種類數的中獎概率。如果使用循環的話針對這個題需要5重循環,我想你應該會,我就不寫了。
//--------------------------------
放代碼:
//--------------------------------
#include <stdio.h>
#include <conio.h>
//----------------------
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%
當然,你還可以加一個約分函數使得結果為最簡分數。這里就不再討論了。