std:: generate_canonical
|
헤더 파일에 정의됨
<random>
|
||
|
template
<
class
RealType,
std::
size_t
Bits,
class
Generator
>
RealType generate_canonical ( Generator & g ) ; |
(C++11부터) | |
범위 내에서 임의의 부동 소수점 숫자를 생성합니다
[
0
,
1
)
.
충분한 엔트로피를 생성하기 위해, generate_canonical ( ) 는 g ( ) 를 정확히 k 번 호출합니다. 여기서 k = max(1, ⌈ b / log 2 R ⌉) 이며
- b = std:: min ( Bits, std:: size_t { std:: numeric_limits < RealType > :: digits } ) ,
- R = g. max ( ) - g. min ( ) + 1 .
목차 |
매개변수
| g | - | 엔트로피 획득에 사용할 생성기 |
반환값
범위 내의 부동 소수점 값
[
0
,
1
)
.
예외
g 에서 발생하는 예외를 제외하고는 없습니다.
참고 사항
일부 기존 구현에는
RealType
이
float
인 경우 가끔
1.0
을 반환하는 버그가 있습니다.
GCC #63176
LLVM #18767
MSVC STL #1074
. 이는
LWG issue 2524
에 해당합니다.
예제
10비트의 무작위성을 가진 난수를 생성합니다: 이것은 오직 k * R 개의 서로 다른 값만 생성할 수 있습니다.
#include <iostream> #include <random> int main() { std::random_device rd; std::mt19937 gen(rd()); for (int n = 0; n < 10; ++n) std::cout << std::generate_canonical<double, 10>(gen) << ' '; std::cout << '\n'; }
가능한 출력:
0.208143 0.824147 0.0278604 0.343183 0.0173263 0.864057 0.647037 0.539467 0.0583497 0.609219
참고 항목
|
(C++11)
|
범위 내에서 균일하게 분포된 실수 값을 생성함
(클래스 템플릿) |