Files
rdkit/External/GA/util/RandomUtil.h
Gareth Jones ec5a172886 R group symmetry (#3565)
* Exploration

* Initial work on GA fro Rgroup Symmetry

* GA for rgroup decomp and fingerprint rgroup symmetry scoring

* Continuing development

* Exploration

* Initial work on GA fro Rgroup Symmetry

* GA for rgroup decomp and fingerprint rgroup symmetry scoring

* Continuing development

* Further development

* Continued tweaks

* Function rename

* Continued tweaks

* Bug fix for variance calculation

* Copyright notices. Remove Eigen dependency. RdKit logging.  Clock fix.

* Changes to fix build failures

* Fixes for Windows dynamic DLL build

* Included GA export.h file

* Fixed RGroupDecomp CMakeLists.txt

* Notebooks working, GGroup labelling bug fixed

* Fix windows build.  More options for example GA program

* More bugs found and tests adjusted

* Fixed Python rgroup test

* Trivial change to trigger CI

* OSX java and windows build fixes

* Windows DLL fix

* Fix segmentation error

* proposed change

* Possible fix for segmentation fault

* CR fixes

* CR fixes

* CR fixes

* Recreates molecules from rgroups where possible

Co-authored-by: greg landrum <greg.landrum@gmail.com>
Co-authored-by: Brian Kelley <fustigator@gmail.com>
2021-01-05 09:27:33 -05:00

60 lines
1.2 KiB
C++

//
// 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_ */