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