File: Mongoose_Random.cpp

package info (click to toggle)
suitesparse 1%3A5.4.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 138,928 kB
  • sloc: ansic: 389,614; cpp: 24,213; makefile: 5,965; fortran: 1,927; java: 1,808; csh: 1,750; ruby: 725; sh: 226; perl: 225; python: 209; sed: 164; awk: 60
file content (49 lines) | stat: -rw-r--r-- 1,392 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/* ========================================================================== */
/* === Source/Mongoose_Random.cpp =========================================== */
/* ========================================================================== */

/* -----------------------------------------------------------------------------
 * Mongoose Graph Partitioning Library  Copyright (C) 2017-2018,
 * Scott P. Kolodziej, Nuri S. Yeralan, Timothy A. Davis, William W. Hager
 * Mongoose is licensed under Version 3 of the GNU General Public License.
 * Mongoose is also available under other licenses; contact authors for details.
 * -------------------------------------------------------------------------- */

#include "Mongoose_Random.hpp"

#if CPP11_OR_LATER
#include <random>
#endif

namespace Mongoose
{

#if CPP11_OR_LATER
std::random_device rd;
std::ranlux24_base generator(rd());
std::uniform_int_distribution<> distribution;
#endif

Int random()
{
#if CPP11_OR_LATER
    // Use C++11 random object
    return distribution(generator);
#else
    // Forced to use non-reentrant std::rand
    return std::rand();
#endif
}

void setRandomSeed(Int seed)
{
#if CPP11_OR_LATER
    // Use C++11 random object
    generator.seed(static_cast<unsigned int>(seed));
#else
    // Forced to use non-reentrant std::rand
    std::srand(static_cast<unsigned int>(seed));
#endif
}

} // end namespace Mongoose