From 3a8d72fbbc6eabd5cc8cc54dec16dd0fb04de708 Mon Sep 17 00:00:00 2001 From: Kostas Savvidis <40568283+kotika@users.noreply.github.com> Date: Tue, 29 Oct 2019 16:00:15 +0200 Subject: [PATCH] Update generators.qbk --- doc/generators.qbk | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/doc/generators.qbk b/doc/generators.qbk index 2859cea..378892f 100644 --- a/doc/generators.qbk +++ b/doc/generators.qbk @@ -13,6 +13,15 @@ class templates with template value parameters, hidden in `namespace boost::random`. Any particular choice of parameters is represented as the appropriately specializing `typedef` in `namespace boost`. +The [prng Pseudo-random number generators] offered in this library have been +chosen from a few families with different underlying principle of operation +based on their performance and quality characteristics. None of the generators +are capable of producing sequences which are indistinguishable from random for +longer than approximately the cubic root of their period. Thus, the generators +with a period of 2[sup 32] or less (most of them are linear congruential +generators) are suitable only for a program or simulation which needs only a +few hundred random numbers. + [prng Pseudo-random number generators] should not be constructed (initialized) frequently during program execution, for two reasons. First, initialization requires full initialization of the internal state of the generator. Thus, @@ -47,13 +56,14 @@ numbers mean faster random number generation. [[__minstd_rand] [2[sup 31]-2] [`sizeof(int32_t)`] [[minstd_rand_speed]] [-]] [[__rand48][2[sup 48]-1] [`sizeof(uint64_t)`] [[rand48_speed]] [-]] [[__ecuyer1988] [approx. 2[sup 61]] [`2*sizeof(int32_t)`] [[ecuyer_combined_speed]] [-]] - [[__knuth_b] [?] [`257*sizeof(uint32_t)`] [[knuth_b_speed]] [-]] + [[__knuth_b] [2[sup 31]-2] [`257*sizeof(uint32_t)`] [[knuth_b_speed]] [-]] [[__kreutzer1986] [?] [`98*sizeof(uint32_t)`] [[kreutzer1986_speed]] [-]] [[__taus88] [~2[sup 88]] [`3*sizeof(uint32_t)`] [[taus88_speed]] [-]] [[__hellekalek1995] [2[sup 31]-1] [`sizeof(int32_t)`] [[hellekalek1995__inversive__speed]] [good uniform distribution in several dimensions]] [[__mt11213b] [2[sup 11213]-1] [`352*sizeof(uint32_t)`] [[mt11213b_speed]] [good uniform distribution in up to 350 dimensions]] [[__mt19937] [2[sup 19937]-1] [`625*sizeof(uint32_t)`] [[mt19937_speed]] [good uniform distribution in up to 623 dimensions]] [[__mt19937_64] [2[sup 19937]-1] [`312*sizeof(uint64_t)`] [[mt19937_64_speed]] [good uniform distribution in up to 311 dimensions]] + [[__mixmax] [~10[sup 294]] [152] [[-]] [unconditionally guaranteed MC convergence in up to 17 dimensions]] [[__lagged_fibonacci607] [~2[sup 32000]] [`607*sizeof(double)`] [[lagged_fibonacci607_speed]] [-]] [[__lagged_fibonacci1279] [~2[sup 67000]] [`1279*sizeof(double)`] [[lagged_fibonacci1279_speed]] [-]] [[__lagged_fibonacci2281] [~2[sup 120000]] [`2281*sizeof(double)`] [[lagged_fibonacci2281_speed]] [-]]