Everlonely

用代码证明统计概率公式P(AB)=P(A|B)P(B)

概率符号定义:

P(A) - probability of event A.

P(AB) - probability of simultaneous events A and B.

P(A|B) - probability of event A given event B.

 

证明过程:

 

 class Program
{
static Random R = new Random();
static void Main(string[] args)
{
List<Sample> ss = new List<Sample>();
for (int i = 0; i < 30; i++)
{
Sample s = new Sample();
if (R.Next(0, 2) == 0)
s.A = true;
if (R.Next(0, 2) == 0)
s.B = true;
ss.Add(s);
}
foreach (Sample s in ss)
{
Console.WriteLine(string.Format("A:{0},B:{1}", s.A, s.B));
}
//P(AB) probability of simultaneous events A and B.
double c_A_And_B = 0;
foreach (Sample s in ss)
{
if (s.A && s.B) c_A_And_B++;
}
Console.WriteLine("P(AB)={0}", c_A_And_B / 30);
//P(A|B) probability of event A given event B.
double c_B = 0;
double c_A_Given_B = 0;
foreach (Sample s in ss)
{
if (s.B)
{
c_B++;
if (s.A) c_A_Given_B++;
}
}
double p_A_Given_B = c_A_Given_B / c_B;
Console.WriteLine("P(A|B)={0}", p_A_Given_B);
double p_B = c_B / 30;
Console.WriteLine("P(B)={0}", p_B);
Console.WriteLine("P(A|B)P(B)={0}", p_A_Given_B * p_B);
Console.ReadKey();
}
}
public class Sample
{
public bool A { get; set; }
public bool B { get; set; }
}

一个随机输出结果

A:True,B:False
A:True,B:False
A:False,B:False
A:False,B:True
A:True,B:False
A:False,B:False
A:False,B:False
A:False,B:True
A:False,B:False
A:True,B:False
A:True,B:False
A:False,B:False
A:False,B:True
A:False,B:True
A:False,B:True
A:False,B:True
A:True,B:True
A:True,B:False
A:True,B:False
A:True,B:True
A:False,B:False
A:True,B:False
A:False,B:True
A:False,B:True
A:True,B:False
A:False,B:False
A:False,B:True
A:False,B:True
A:False,B:False
A:True,B:True
P(AB)=0.1
P(A|B)=0.230769230769231
P(B)=0.433333333333333
P(A|B)P(B)=0.1

posted on 2010-12-24 14:30  Everlonely  阅读(2501)  评论(0编辑  收藏  举报

导航