jubatus_core  0.1.2
Jubatus: Online machine learning framework for distributed environment
Public Member Functions | Private Member Functions | Private Attributes | List of all members
jubatus::core::clustering::discrete_distribution Class Reference

#include <discrete_distribution.hpp>

Collaboration diagram for jubatus::core::clustering::discrete_distribution:
Collaboration graph

Public Member Functions

 discrete_distribution (std::vector< double >::iterator begin, std::vector< double >::iterator end)
 
size_t operator() ()
 

Private Member Functions

size_t convert (double d)
 

Private Attributes

jubatus::util::math::random::mtrand r_
 
double sum_
 
std::vector< double > whist_
 

Detailed Description

Definition at line 27 of file discrete_distribution.hpp.

Constructor & Destructor Documentation

jubatus::core::clustering::discrete_distribution::discrete_distribution ( std::vector< double >::iterator  begin,
std::vector< double >::iterator  end 
)

Definition at line 27 of file discrete_distribution.cpp.

References sum_, and whist_.

30  : r_(),
31  whist_() {
32  sum_ = 0;
33  for (vector<double>::iterator it = begin; it != end; ++it) {
34  sum_ += *it;
35  whist_.push_back(sum_);
36  }
37 }

Member Function Documentation

size_t jubatus::core::clustering::discrete_distribution::convert ( double  d)
private

Definition at line 44 of file discrete_distribution.cpp.

References whist_.

Referenced by operator()().

44  {
45  size_t low = 0;
46  size_t high = whist_.size() - 1;
47  size_t mid = 0;
48  while (low < high) {
49  mid = (low + high) / 2;
50  if (whist_[mid] < d) {
51  if (low == mid) {
52  break;
53  }
54  low = mid;
55  } else {
56  if (high == mid) {
57  break;
58  }
59  high = mid;
60  }
61  }
62  return high;
63 }

Here is the caller graph for this function:

size_t jubatus::core::clustering::discrete_distribution::operator() ( )

Definition at line 39 of file discrete_distribution.cpp.

References convert(), r_, and sum_.

39  {
40  double d = r_.next_double() * sum_;
41  return convert(d);
42 }

Here is the call graph for this function:

Member Data Documentation

jubatus::util::math::random::mtrand jubatus::core::clustering::discrete_distribution::r_
private

Definition at line 37 of file discrete_distribution.hpp.

Referenced by operator()().

double jubatus::core::clustering::discrete_distribution::sum_
private

Definition at line 39 of file discrete_distribution.hpp.

Referenced by discrete_distribution(), and operator()().

std::vector<double> jubatus::core::clustering::discrete_distribution::whist_
private

Definition at line 38 of file discrete_distribution.hpp.

Referenced by convert(), and discrete_distribution().


The documentation for this class was generated from the following files: