17 Ağustos 2017 Perşembe

std::bernoulli_distribution - true veya false Değer Üretir

Giriş
Bernoulli - Binomial Distribution - Binom dağılım demektir. Yani true veya false değer üretir.
Bu dağılım sınıfını kullanmak şöyle yapmaktan daha kolay
if (random.rand() < 0.5) {
  ...

} else {
  ...
}
Örnek
1 ve 0'lardan oluşan bir string üretmek isteyelim. Şöyle yaparız.
#include <random>
#include <string>

template <typename Generator>
std::string generate_binary_string(Generator& g, std::size_t n) {
  std::bernoulli_distribution d;

  std::string s;
  s.reserve(n);

  for (std::size_t i = 0; i < n; ++i) {
    s.push_back(d(g) ? '1' : '0');
  }

  return s;
}
Çağırmak için şöyle yaparız
#include <iostream>

int main() {
 std::random_device g;
 std::cout << generate_binary_string(g, 32u) << std::endl;
}
constructor - default
0.5 ile ilklenir. Yani %50 true, %50 false üret anlamına gelir.

constructor - probability of true
Örnek
Şöyle yaparız
struct Point {
  Point();
  double x;
  double y;
  unsigned int label;
};

Point::Point() {
  static std::random_device rd;
  static std::mt19937 gen(rd());
  
  static std::bernoulli_distribution type(0.4);
  label = type(gen);
}




Hiç yorum yok:

Yorum Gönder