二項確率変数

二項確率変数

この記事では、二項確率変数について説明します。
前提条件: ランダム変数 
特定の種類の 離散 固定回数の試行で特定のイベントが発生する頻度をカウントする確率変数。 
変数が二項確率変数になるには、次の条件をすべて満たす必要があります。 
 

  1. 試行回数は固定されています (固定サンプルサイズ)。
  2. 各試行では、対象のイベントが発生するか、または発生しません。
  3. 発生する (またはしない) 確率は、各試行で同じです。
  4. トライアルは互いに独立しています。


数学的表記法 
 

 n = number of trials   
p = probability of success in each trial
k = number of success in n trials


ここで、n 回の試行で k が成功する確率を調べようとします。
ここで、各試行の成功確率は、他の試行から独立して p です。 
したがって、最初に成功する k 回の試行を選択し、残りの n-k 回の試行で失敗することを選択します。そうする方法の数は 
 

二項確率変数


n 個のイベントはすべて独立しているため、n 回の試行で k 回成功する確率は、各試行の確率の乗算に相当します。
ここで、k 個の成功と n-k 個の失敗があるため、k 個の成功と n-k 個の失敗を達成する各方法の確率は次のようになります。 
 

二項確率変数


したがって、最終的な確率は 
 

 (number of ways to achieve k success   
and n-k failures)
*
(probability for each way to achieve k
success and n-k failure)


この場合、二項ランダム変数確率は次のように求められます。 
 

二項確率変数


X を試行回数 n、各試行の成功確率を p とした二項確率変数とします。 
期待される成功数は次のように計算されます。 
 

 E[X] = np  


成功回数の分散は次の式で与えられます。 
 

 Var[X] = np(1-p)  


例1 : 偏ったコイン (表の確率 = 1/3) を 10 回投げるランダムな実験を考えます。出る表の数が5になる確率を求めよ。
解決 : 
 

 Let X be binomial random variable    
with n = 10 and p = 1/3
P(X=5) = ? 二項確率変数
     二項確率変数 
    

これは同じ実装です 
 

C++
   // C++ program to compute Binomial Probability   #include          #include         using     namespace     std  ;   // function to calculate nCr i.e. number of    // ways to choose r out of n objects   int     nCr  (  int     n       int     r  )   {      // Since nCr is same as nC(n-r)      // To decrease number of iterations      if     (  r     >     n     /     2  )      r     =     n     -     r  ;      int     answer     =     1  ;      for     (  int     i     =     1  ;     i      <=     r  ;     i  ++  )     {      answer     *=     (  n     -     r     +     i  );      answer     /=     i  ;      }      return     answer  ;   }   // function to calculate binomial r.v. probability   float     binomialProbability  (  int     n       int     k       float     p  )   {      return     nCr  (  n       k  )     *     pow  (  p       k  )     *      pow  (  1     -     p       n     -     k  );   }   // Driver code   int     main  ()   {      int     n     =     10  ;      int     k     =     5  ;      float     p     =     1.0     /     3  ;      float     probability     =     binomialProbability  (  n       k       p  );      cout      < <     'Probability of '      < <     k  ;      cout      < <     ' heads when a coin is tossed '      < <     n  ;      cout      < <     ' times where probability of each head is '      < <     p      < <     endl  ;      cout      < <     ' is = '      < <     probability      < <     endl  ;   }   
Java
   // Java program to compute Binomial Probability   import     java.util.*  ;   class   GFG   {      // function to calculate nCr i.e. number of       // ways to choose r out of n objects      static     int     nCr  (  int     n       int     r  )      {      // Since nCr is same as nC(n-r)      // To decrease number of iterations      if     (  r     >     n     /     2  )      r     =     n     -     r  ;          int     answer     =     1  ;      for     (  int     i     =     1  ;     i      <=     r  ;     i  ++  )     {      answer     *=     (  n     -     r     +     i  );      answer     /=     i  ;      }          return     answer  ;      }          // function to calculate binomial r.v. probability      static     float     binomialProbability  (  int     n       int     k       float     p  )      {      return     nCr  (  n       k  )     *     (  float  )  Math  .  pow  (  p       k  )     *         (  float  )  Math  .  pow  (  1     -     p       n     -     k  );      }          // Driver code      public     static     void     main  (  String  []     args  )      {      int     n     =     10  ;      int     k     =     5  ;      float     p     =     (  float  )  1.0     /     3  ;          float     probability     =     binomialProbability  (  n       k       p  );          System  .  out  .  print  (  'Probability of '     +  k  );      System  .  out  .  print  (  ' heads when a coin is tossed '     +  n  );      System  .  out  .  println  (  ' times where probability of each head is '     +  p  );      System  .  out  .  println  (     ' is = '     +     probability     );      }   }   /* This code is contributed by Mr. Somesh Awasthi */   
Python3
   # Python3 program to compute Binomial    # Probability   # function to calculate nCr i.e.   # number of ways to choose r out   # of n objects   def   nCr  (  n     r  ):   # Since nCr is same as nC(n-r)   # To decrease number of iterations   if   (  r   >   n   /   2  ):   r   =   n   -   r  ;   answer   =   1  ;   for   i   in   range  (  1     r   +   1  ):   answer   *=   (  n   -   r   +   i  );   answer   /=   i  ;   return   answer  ;   # function to calculate binomial r.v.   # probability   def   binomialProbability  (  n     k     p  ):   return   (  nCr  (  n     k  )   *   pow  (  p     k  )   *   pow  (  1   -   p     n   -   k  ));   # Driver code   n   =   10  ;   k   =   5  ;   p   =   1.0   /   3  ;   probability   =   binomialProbability  (  n     k     p  );   print  (  'Probability of'     k     'heads when a coin is tossed'     end   =   ' '  );   print  (  n     'times where probability of each head is'     round  (  p     6  ));   print  (  'is = '     round  (  probability     6  ));   # This code is contributed by mits   
C#
   // C# program to compute Binomial   // Probability.   using     System  ;   class     GFG     {          // function to calculate nCr      // i.e. number of ways to       // choose r out of n objects      static     int     nCr  (  int     n       int     r  )      {          // Since nCr is same as      // nC(n-r) To decrease       // number of iterations      if     (  r     >     n     /     2  )      r     =     n     -     r  ;          int     answer     =     1  ;      for     (  int     i     =     1  ;     i      <=     r  ;     i  ++  )      {      answer     *=     (  n     -     r     +     i  );      answer     /=     i  ;      }          return     answer  ;      }          // function to calculate binomial      // r.v. probability      static     float     binomialProbability  (      int     n       int     k       float     p  )      {      return     nCr  (  n       k  )     *         (  float  )  Math  .  Pow  (  p       k  )      *     (  float  )  Math  .  Pow  (  1     -     p        n     -     k  );      }          // Driver code      public     static     void     Main  ()      {      int     n     =     10  ;      int     k     =     5  ;      float     p     =     (  float  )  1.0     /     3  ;          float     probability     =         binomialProbability  (  n       k       p  );          Console  .  Write  (  'Probability of '      +     k  );      Console  .  Write  (  ' heads when a coin '      +     'is tossed '     +     n  );      Console  .  Write  (  ' times where '      +     'probability of each head is '      +     p  );      Console  .  Write  (     ' is = '      +     probability     );      }   }   // This code is contributed by nitin mittal.   
JavaScript
    <  script  >   // Javascript program to compute Binomial Probability      // function to calculate nCr i.e. number of       // ways to choose r out of n objects      function     nCr  (  n       r  )      {      // Since nCr is same as nC(n-r)      // To decrease number of iterations      if     (  r     >     n     /     2  )      r     =     n     -     r  ;          let     answer     =     1  ;      for     (  let     i     =     1  ;     i      <=     r  ;     i  ++  )     {      answer     *=     (  n     -     r     +     i  );      answer     /=     i  ;      }          return     answer  ;      }          // function to calculate binomial r.v. probability      function     binomialProbability  (  n       k       p  )      {      return     nCr  (  n       k  )     *     Math  .  pow  (  p       k  )     *         Math  .  pow  (  1     -     p       n     -     k  );      }       // driver program      let     n     =     10  ;      let     k     =     5  ;      let     p     =     1.0     /     3  ;          let     probability     =     binomialProbability  (  n       k       p  );          document  .  write  (  'Probability of '     +  k  );      document  .  write  (  ' heads when a coin is tossed '     +  n  );      document  .  write  (  ' times where probability of each head is '     +  p  );      document  .  write  (     ' is = '     +     probability     );          // This code is contributed by code_hunt.    <  /script>   
PHP
      // php program to compute Binomial    // Probability   // function to calculate nCr i.e.   // number of ways to choose r out   // of n objects   function   nCr  (  $n     $r  )   {   // Since nCr is same as nC(n-r)   // To decrease number of iterations   if   (  $r   >   $n   /   2  )   $r   =   $n   -   $r  ;   $answer   =   1  ;   for   (  $i   =   1  ;   $i    <=   $r  ;   $i  ++  )   {   $answer   *=   (  $n   -   $r   +   $i  );   $answer   /=   $i  ;   }   return   $answer  ;   }   // function to calculate binomial r.v.   // probability   function   binomialProbability  (  $n     $k     $p  )   {   return   nCr  (  $n     $k  )   *   pow  (  $p     $k  )   *   pow  (  1   -   $p     $n   -   $k  );   }   // Driver code   $n   =   10  ;   $k   =   5  ;   $p   =   1.0   /   3  ;   $probability   =   binomialProbability  (  $n     $k     $p  );   echo   'Probability of '   .   $k  ;   echo   ' heads when a coin is tossed '   .   $n  ;   echo   ' times where probability of '   .   'each head is '   .   $p   ;   echo   ' is = '   .   $probability   ;   // This code is contributed by nitin mittal.   ?>   

出力:  
 

 Probability of 5 heads when a coin is tossed 10 times where probability of each head is 0.333333   
is = 0.136565


 

クイズの作成