2016-07-23 9 views
-4

誰かが公園をノックアウトするための簡単なソフトボール:オッズ比をパーセントで、オッズ比をオッズ比で計算する正しいコーディング方式は何ですか?例:率をオッズ比と逆に変換する

Odds to Percent 
1 in 8192 = 0.0001220 

Percent to Odds 
0.0001220 = 1 in 8192 

プログラミング言語は無関係です。

答えて

-1
odds_to_percent(a, b): 
    return str(float(a)/b) 

percent_to_odds(x): 
    return '1 in ' + str(1.0/x) 

正確な情報が不明です。丸めと共同に関する多くの決定があります。ここで

+0

よろしいオッズは、パーセントにされます「(ダブル)a /(b + a)」を返さないでください。修辞的な質問。ちなみに、ファントムダウンボォートは私にこの質問を閉じるようにしています。 – Krythic

+0

オッズを定義します。私は* 1をX *で記述していますが、* 1とX(部品)*は説明していません。 – sascha

-1

は私が思い付いたものです:パーセントへ

public struct Odds 
    { 
     private int _a; 
     private int _b; 


     public int A 
     { 
      get 
      { 
       return _a; 
      } 
     } 

     public int B 
     { 
      get 
      { 
       return _b; 
      } 
     } 

     public Odds(int a, int b) 
     { 
      this._a = a; 
      this._b = b; 
     } 

     public Odds(double percent) 
     { 
      Odds odds = FromPercent(percent); 
      this._a = odds.A; 
      this._b = odds.B; 
     } 

     public Odds Invert() 
     { 
      return new Odds(_b, _a); 
     } 

     public double ToPercent() 
     { 
      return ToPercent(_a, _b); 
     } 

     public static double ToPercent(int a, int b) 
     { 
      return ((double)a/(b + a)); 
     } 

     public static Odds FromPercent(double percent) 
     { 
      int multiplier = GetDecimalMultiplier(percent); 
      return new Odds(1, (multiplier - (int)(percent * multiplier))/(int)(percent * multiplier)); 
     } 

     private static int GetDecimalMultiplier(double n) 
     { 
      if (n > 0.01) 
      { 
       return 100; 
      } 
      if (n > 0.001) 
      { 
       return 100000; 
      } 
      if (n > 0.0001) 
      { 
       return 100000000; 
      } 
      throw new Exception("Number too small!"); 
     } 

     public override string ToString() 
     { 
      return A + "-" + B; 
     } 
    } 

オッズ:

public static double ToPercent(int a, int b) 
    { 
     return ((double)a/(b + a)); 
    } 

パーセントオッズに(完全ではない場合があります)

 public static Odds FromPercent(double percent) 
     { 
      int multiplier = GetDecimalMultiplier(percent); 
      return new Odds(1, (multiplier - (int)(percent * multiplier))/(int)(percent * multiplier)); 
     } 

     private static int GetDecimalMultiplier(double n) 
     { 
      if (n > 0.01) 
      { 
       return 100; 
      } 
      if (n > 0.001) 
      { 
       return 100000; 
      } 
      if (n > 0.0001) 
      { 
       return 100000000; 
      } 
      throw new Exception("Number too small!"); 
     } 
関連する問題