函式模板
<random>

std::generate_canonical

template <class RealType, size_t bits, class URNG>  RealType generate_canonical (URNG& g);
生成規範化數字
將由g生成的數值轉換為範圍在[0,1)內的浮點數值,同時保持g生成的序列的均勻性。

這可能涉及一次或多次呼叫g.operator(),具體取決於請求的精度(模板引數bits)。

模板引數

實數型別 (RealType)
浮點型別。
該函式返回此型別的某個值。
bits
尾數中的最大位數(精度)。
如果此值大於型別的精度,numeric_limits<RealType>::digits將被使用。
URNG
統一隨機數生成器類。

引數

g
一個統一隨機數生成器物件,其operator()用於生成數值。

返回值

g生成的數字的規範化等效值。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// generate_canonical
#include <iostream>
#include <chrono>
#include <limits>
#include <random>

int main ()
{
 // obtain a seed from the system clock:
  unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();

  std::default_random_engine generator (seed);
  double d = std::generate_canonical<double,std::numeric_limits<double>::digits>(generator);

  std::cout << "Canonical random value: " << d << std::endl;

  return 0;
}

輸出
Canonical random value: 0.349775


另見