A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Documentation ▼
Installation
Manual
Models
Contributing
Wiki
Development ▼
API Docs
Issue Tracker
Merge Requests
API
Loading...
Searching...
No Matches
rng-stream.h
Go to the documentation of this file.
1
//
2
// Copyright (C) 2001 Pierre L'Ecuyer (lecuyer@iro.umontreal.ca)
3
//
4
// This program is free software; you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License version 2 as
6
// published by the Free Software Foundation;
7
//
8
// This program is distributed in the hope that it will be useful,
9
// but WITHOUT ANY WARRANTY; without even the implied warranty of
10
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
// GNU General Public License for more details.
12
//
13
// You should have received a copy of the GNU General Public License
14
// along with this program; if not, write to the Free Software
15
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16
//
17
// Modified for ns-3 by: Rajib Bhattacharjea<raj.b@gatech.edu>
18
19
#ifndef RNGSTREAM_H
20
#define RNGSTREAM_H
21
#include <stdint.h>
22
#include <string>
23
24
/**
25
* \file
26
* \ingroup rngimpl
27
* ns3::RngStream declaration.
28
*/
29
30
namespace
ns3
31
{
32
33
/**
34
* \ingroup randomvariable
35
* \defgroup rngimpl RNG Implementation
36
*/
37
38
/**
39
* \ingroup rngimpl
40
*
41
* \brief Combined Multiple-Recursive Generator MRG32k3a
42
*
43
* This class is the combined multiple-recursive random number
44
* generator called MRG32k3a. The ns3::RandomVariableBase class
45
* holds a static instance of this class. The details of this
46
* class are explained in:
47
* http://www.iro.umontreal.ca/~lecuyer/myftp/papers/streams00.pdf
48
*/
49
class
RngStream
50
{
51
public
:
52
/**
53
* Construct from explicit seed, stream and substream values.
54
*
55
* \param [in] seed The starting seed.
56
* \param [in] stream The stream number.
57
* \param [in] substream The sub-stream number.
58
*/
59
RngStream
(
uint32_t
seed, uint64_t stream, uint64_t substream);
60
/**
61
* Copy constructor.
62
*
63
* \param [in] r The RngStream to copy.
64
*/
65
RngStream
(
const
RngStream
& r);
66
/**
67
* Generate the next random number for this stream.
68
* Uniformly distributed between 0 and 1.
69
*
70
* \returns The next random.
71
*/
72
double
RandU01
();
73
74
private
:
75
/**
76
* Advance \pname{state} of the RNG by leaps and bounds.
77
*
78
* \param [in] nth The stream or substream index.
79
* \param [in] by The log2 base of \pname{nth}.
80
* \param [in] state The state vector to advance.
81
*/
82
void
AdvanceNthBy
(uint64_t nth,
int
by,
double
state[6]);
83
84
/** The RNG state vector. */
85
double
m_currentState
[6];
86
};
87
88
}
// namespace ns3
89
90
#endif
ns3::RngStream
Combined Multiple-Recursive Generator MRG32k3a.
Definition:
rng-stream.h:50
ns3::RngStream::m_currentState
double m_currentState[6]
The RNG state vector.
Definition:
rng-stream.h:85
ns3::RngStream::AdvanceNthBy
void AdvanceNthBy(uint64_t nth, int by, double state[6])
Advance state of the RNG by leaps and bounds.
Definition:
rng-stream.cc:401
ns3::RngStream::RandU01
double RandU01()
Generate the next random number for this stream.
Definition:
rng-stream.cc:341
uint32_t
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
src
core
model
rng-stream.h
Generated on Tue May 28 2024 23:34:38 for ns-3 by
1.9.6