SDXFrameWork  0.11
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  }
35  static int Get(int 最大値)
36  {
37  std::uniform_int_distribution<int> range(0, 最大値);
38  return range(Engine());
39  }
40 
42  static double Get(double 最小値, double 最大値)
43  {
44  std::uniform_real_distribution<double> range(最小値, 最大値);
45  return range(Engine());
46  }
48  static int Get(int 最小値, int 最大値)
49  {
50  std::uniform_int_distribution<int> range(最小値, 最大値);
51  return range(Engine());
52  }
53 
56  static bool Coin(double trueになる確率)
57  {
58  if (trueになる確率 >= 1.0) return true;
59 
60  std::bernoulli_distribution coin(std::min(trueになる確率, 1.0));
61 
62  return coin(Engine());
63  }
64  };
65 }
static void Reset(int 初期化子)
乱数を初期化する.
Definition: Rand.h:23
static int Get(int 最小値, int 最大値)
範囲を指定して乱数を取得.
Definition: Rand.h:48
static int Get(int 最大値)
0~最大値の乱数を取得.
Definition: Rand.h:35
static bool Coin(double trueになる確率)
範囲を指定して乱数を取得.
Definition: Rand.h:56
乱数生成関数群.
Definition: Rand.h:11
static double Get(double 最大値)
0~最大値の乱数を取得.
Definition: Rand.h:29
static double Get(double 最小値, double 最大値)
範囲を指定して乱数を取得.
Definition: Rand.h:42