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...
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Definition ptr.h:436
Every class exported by the ns3 library is enclosed in the ns3 namespace.
RngSeedManager SeedManager
Alias for compatibility.