VTK  9.3.0
vtkMersenneTwister.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-FileCopyrightText: Copyright (C) 2001-2009 Makoto Matsumoto and Takuji Nishimura
3 // SPDX-FileCopyrightText: Copyright (C) 2009 Mutsuo Saito
4 // SPDX-License-Identifier: BSD-3-Clause AND BSD-2-Clause
32 #ifndef vtkMersenneTwister_h
33 #define vtkMersenneTwister_h
34 
35 #include "vtkCommonCoreModule.h" // For export macro
36 #include "vtkRandomSequence.h"
37 
38 VTK_ABI_NAMESPACE_BEGIN
39 class vtkMersenneTwisterInternals;
40 
41 class VTKCOMMONCORE_EXPORT vtkMersenneTwister : public vtkRandomSequence
42 {
43 public:
44  typedef vtkTypeUInt32 SequenceId;
45 
47 
52  void PrintSelf(ostream& os, vtkIndent indent) override;
54 
59  void Initialize(vtkTypeUInt32 seed) override { this->InitializeSequence(0, seed); }
60 
68  SequenceId InitializeNewSequence(vtkTypeUInt32 seed, int p = 521);
69 
76  void InitializeSequence(SequenceId id, vtkTypeUInt32 seed, int p = 521);
77 
82  virtual double GetValue(SequenceId id);
83 
88  double GetValue() override { return this->GetValue(0); }
89 
95  virtual void Next(SequenceId id);
96 
102  void Next() override { return this->Next(0); }
103 
104 protected:
107 
108  vtkMersenneTwisterInternals* Internal;
109 
110 private:
111  vtkMersenneTwister(const vtkMersenneTwister&) = delete;
112  void operator=(const vtkMersenneTwister&) = delete;
113 };
114 
115 VTK_ABI_NAMESPACE_END
116 #endif // #ifndef vtkMersenneTwister_h
a simple class to control print indentation
Definition: vtkIndent.h:38
Generator for Mersenne Twister pseudorandom numbers.
virtual void Next(SequenceId id)
Move to the next number in random sequence id.
vtkTypeUInt32 SequenceId
static vtkMersenneTwister * New()
Standard methods for instantiation, type information, and printing.
vtkMersenneTwisterInternals * Internal
void Next() override
Move to the next number in random sequence <0>.
void InitializeSequence(SequenceId id, vtkTypeUInt32 seed, int p=521)
Initialize a sequence as in InitializeNewSequence(), but additionally pass an id to associate with th...
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods for instantiation, type information, and printing.
virtual double GetValue(SequenceId id)
Current value.
double GetValue() override
Current value.
void Initialize(vtkTypeUInt32 seed) override
Satisfy general API of vtkRandomSequence superclass.
SequenceId InitializeNewSequence(vtkTypeUInt32 seed, int p=521)
Initialize a new Mersenne Twister sequence, given a) a seed and b) a Mersenne exponent (p s....
~vtkMersenneTwister() override
Generate a sequence of random numbers.