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-seed-manager.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2012 Mathieu Lacage
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
*/
18
19
#ifndef RNG_SEED_MANAGER_H
20
#define RNG_SEED_MANAGER_H
21
22
#include <stdint.h>
23
24
/**
25
* \file
26
* \ingroup randomvariable
27
* ns3::RngSeedManager declaration.
28
*/
29
30
namespace
ns3
31
{
32
33
/**
34
* \ingroup randomvariable
35
*
36
* Manage the seed number and run number of the underlying
37
* random number generator, and automatic assignment of stream numbers.
38
*/
39
class
RngSeedManager
40
{
41
public
:
42
/**
43
* \brief Set the seed.
44
*
45
* This sets the global initial seed which will be used all
46
* subsequently instantiated RandomVariableStream objects.
47
*
48
* \code
49
* RngSeedManager::SetSeed(15);
50
* UniformVariable x(2,3); // These will give the same output every time
51
* ExponentialVariable y(120); // as long as the seed stays the same.
52
* \endcode
53
* \param [in] seed The seed value to use.
54
*
55
* \note While the underlying RNG takes six integer values as a seed;
56
* it is sufficient to set these all to the same integer, so we provide
57
* a simpler interface here that just takes one integer.
58
*/
59
static
void
SetSeed
(
uint32_t
seed);
60
61
/**
62
* \brief Get the current seed value which will be used by all
63
* subsequently instantiated RandomVariableStream objects.
64
*
65
* \return The seed value.
66
*
67
* This returns the current seed value.
68
*/
69
static
uint32_t
GetSeed
();
70
71
/**
72
* \brief Set the run number of simulation.
73
*
74
* \code
75
* RngSeedManager::SetSeed(12);
76
* int N = atol(argv[1]); // Read in run number from command line.
77
* RngSeedManager::SetRun(N);
78
* UniformVariable x(0,10);
79
* ExponentialVariable y(2902);
80
* \endcode
81
* In this example, \c N could successively be equal to 1,2,3, _etc._
82
* and the user would continue to get independent runs out of the
83
* single simulation. For this simple example, the following might work:
84
* \code
85
* ./simulation 0
86
* ...Results for run 0:...
87
*
88
* ./simulation 1
89
* ...Results for run 1:...
90
* \endcode
91
*
92
* \param [in] run The run number.
93
*/
94
static
void
SetRun
(uint64_t run);
95
/**
96
* \brief Get the current run number.
97
* \returns The current run number
98
* \see SetRun
99
*/
100
static
uint64_t
GetRun
();
101
102
/**
103
* Get the next automatically assigned stream index.
104
* \returns The next stream index.
105
*/
106
static
uint64_t
GetNextStreamIndex
();
107
};
108
109
/** Alias for compatibility. */
110
typedef
RngSeedManager
SeedManager
;
111
112
}
// namespace ns3
113
114
#endif
/* RNG_SEED_MANAGER_H */
ns3::RngSeedManager
Manage the seed number and run number of the underlying random number generator, and automatic assign...
Definition:
rng-seed-manager.h:40
ns3::RngSeedManager::SetRun
static void SetRun(uint64_t run)
Set the run number of simulation.
Definition:
rng-seed-manager.cc:90
ns3::RngSeedManager::SetSeed
static void SetSeed(uint32_t seed)
Set the seed.
Definition:
rng-seed-manager.cc:83
ns3::RngSeedManager::GetNextStreamIndex
static uint64_t GetNextStreamIndex()
Get the next automatically assigned stream index.
Definition:
rng-seed-manager.cc:107
ns3::RngSeedManager::GetRun
static uint64_t GetRun()
Get the current run number.
Definition:
rng-seed-manager.cc:97
ns3::RngSeedManager::GetSeed
static uint32_t GetSeed()
Get the current seed value which will be used by all subsequently instantiated RandomVariableStream o...
Definition:
rng-seed-manager.cc:74
uint32_t
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::SeedManager
RngSeedManager SeedManager
Alias for compatibility.
Definition:
rng-seed-manager.h:110
src
core
model
rng-seed-manager.h
Generated on Tue May 28 2024 23:34:38 for ns-3 by
1.9.6