My Project
probability.h
Go to the documentation of this file.
1 /* probability.h
2  */
3 #ifndef _STAT_PROBABILITY_H
4 #define _STAT_PROBABILITY_H
5 
6 #include <algorithm>
7 #include <cmath>
8 namespace osl
9 {
10  namespace stat
11  {
12  struct Probability
13  {
14  unsigned long numerator, denominator;
15  explicit Probability(unsigned long n=0, unsigned long d=0)
16  : numerator(n), denominator(d)
17  {
18  }
19  double probability(double stabilizer=1.0) const
20  {
21  return std::max(stabilizer,numerator-stabilizer)
22  / std::max(stabilizer,static_cast<double>(denominator));
23  }
24  double logProb(unsigned int stabilizer=1u) const
25  {
26  const double prob = probability(stabilizer);
27  return log(prob)/log(0.5)*100;
28  }
29 
30  void merge(const Probability& other)
31  {
32  numerator += other.numerator;
33  denominator += other.denominator;
34  }
35  };
36  } // namespace stat
37 } // namespace osl
38 
39 #endif /* _STAT_PROBABILITY_H */
40 // ;;; Local Variables:
41 // ;;; mode:c++
42 // ;;; c-basic-offset:2
43 // ;;; End:
44 
45 
osl::stat::Probability::merge
void merge(const Probability &other)
Definition: probability.h:30
osl::stat::Probability::probability
double probability(double stabilizer=1.0) const
Definition: probability.h:19
osl::stat::Probability::numerator
unsigned long numerator
Definition: probability.h:14
osl::eval::max
int max(Player p, int v1, int v2)
Definition: evalTraits.h:84
osl::stat::Probability::Probability
Probability(unsigned long n=0, unsigned long d=0)
Definition: probability.h:15
osl::stat::Probability::logProb
double logProb(unsigned int stabilizer=1u) const
Definition: probability.h:24
osl::stat::Probability::denominator
unsigned long denominator
Definition: probability.h:14
osl::stat::Probability
Definition: probability.h:13
osl
Definition: additionalEffect.h:6