SDXFrameWork  0.13
SDXFrameWork
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
Rand.h
1 //Copyright © 2014 SDXFramework
2 //[License]GNU Affero General Public License, version 3
3 //[Contact]http://sourceforge.jp/projects/dxframework/
4 #pragma once
5 #include <random>
6 
7 namespace SDX
8 {
11  class Rand
12  {
13  private:
14  MONO_STATE(Rand)
15 
16  static std::mt19937& Engine()
17  {
18  static std::mt19937 engine;
19  return engine;
20  }
21  public:
23  static void Reset(int 初期化子)
24  {
25  Engine().seed(初期化子);
26  }
27 
29  static double Get(double 最大値)
30  {
31  std::uniform_real_distribution<double> range(0.0, 最大値);
32  return range(Engine());
33  }
36  static int Get(int 最大値)
37  {
38  std::uniform_int_distribution<int> range(0, 最大値);
39  return range(Engine());
40  }
41 
43  static double Get(double 最小値, double 最大値)
44  {
45  std::uniform_real_distribution<double> range(最小値, 最大値);
46  return range(Engine());
47  }
49  static int Get(int 最小値, int 最大値)
50  {
51  std::uniform_int_distribution<int> range(最小値, 最大値);
52  return range(Engine());
53  }
54 
57  static bool Coin(double trueになる確率)
58  {
59  if (trueになる確率 >= 1.0) return true;
60 
61  std::bernoulli_distribution coin(std::min(trueになる確率, 1.0));
62 
63  return coin(Engine());
64  }
65  };
66 }
static void Reset(int 初期化子)
乱数を初期化する.
Definition: Rand.h:23
static int Get(int 最小値, int 最大値)
範囲を指定して乱数を取得.
Definition: Rand.h:49
static int Get(int 最大値)
0~最大値の乱数を取得.
Definition: Rand.h:36
static bool Coin(double trueになる確率)
範囲を指定して乱数を取得.
Definition: Rand.h:57
乱数生成関数群.
Definition: Rand.h:11
static double Get(double 最大値)
0~最大値の乱数を取得.
Definition: Rand.h:29
static double Get(double 最小値, double 最大値)
範囲を指定して乱数を取得.
Definition: Rand.h:43