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 50 51 52 53 54 55 56 57 58 59
|
//
// Copyright (C) 2020 Gareth Jones, Glysade LLC
//
// @@ All Rights Reserved @@
// This file is part of the RDKit.
// The contents are covered by the terms of the BSD license
// which is included in the file license.txt, found at the root
// of the RDKit source tree.
//
#ifndef UTILS_H_
#define UTILS_H_
#include <cstdint>
#include <random>
#include "export.h"
namespace GarethUtil {
/*
* Singleton class to hold a random number generator
*
*/
class GA_EXPORT RandomUtil {
public:
RandomUtil(const RandomUtil &rhs) = delete;
RandomUtil &operator=(const RandomUtil &rhs) = delete;
RandomUtil(RandomUtil &&rhs) = delete;
RandomUtil &operator=(RandomUtil &&rhs) = delete;
/*
* return a random number between 0 and 1
*/
double normalRand();
/*
* return a random integer between top and bottom
*/
int randomInt(int bottom, int top);
bool randomBoolean();
void seed(uint32_t seed);
/**
* Get singleton
*/
static RandomUtil &getInstance();
private:
RandomUtil();
virtual ~RandomUtil();
std::mt19937 rng;
std::uniform_real_distribution<double> realDistribution;
};
} // namespace GarethUtil
#endif /* UTILS_H_ */
|