diff options
| author | Andrew Guschin <guschin@altlinux.org> | 2024-03-31 18:36:27 +0500 |
|---|---|---|
| committer | Andrew Guschin <guschin@altlinux.org> | 2024-03-31 18:36:27 +0500 |
| commit | f7aa97e10a2fbddb76e1893b7deb193ad56e7192 (patch) | |
| tree | dab29cd1166edee5c096bdfc45d1c6ab509107f8 /graph-checker/nauty/naurng.h | |
| parent | b294692a8251eb9c4ea8f3e78651d88fc6efd792 (diff) | |
latest version
Diffstat (limited to 'graph-checker/nauty/naurng.h')
| -rw-r--r-- | graph-checker/nauty/naurng.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/graph-checker/nauty/naurng.h b/graph-checker/nauty/naurng.h new file mode 100644 index 0000000..876a1c4 --- /dev/null +++ b/graph-checker/nauty/naurng.h @@ -0,0 +1,41 @@ +/* naurng.h : definitions for using Don Knuth's random number generator. + This version uses the attribute TLS_ATTR from nauty.h. + + To use it: + 1. Call ran_init(seed) with any long seed. (Optional, + but you will always get the same sequence otherwise.) + 2. Use NEXTRAN to get the next number (0..2^30-1). + Alternatively, use KRAN(k) to get a random number 0..k-1. + For large k, KRAN(k) is not quite uniform. In that case + use GETKRAN(k,var) to set the variable var to a better + random number 0..k-1. +*/ + +#ifndef NAURNG_H +#include "naututil.h" + +#ifdef __cplusplus +extern "C" { +#endif + +extern void ran_init(long seed); +extern long ran_init_time(long extra); +extern long ran_nextran(void); + +#ifdef __cplusplus +} +#endif + +#define MAXRAN (0x3fffffffL) /* Values are 0..MAXRAN */ +#define NEXTRAN (ran_nextran()) +#define KRAN(k) (NEXTRAN%(k)) +#define RANREAL ((NEXTRAN+0.5)/(MAXRAN+1.0)) /* Uniform (0,1) */ + +#define MAXSAFE(k) (((MAXRAN+1)/(k))*(k)) +#define GETKRAN(k,var) {long __getkran; \ + do {__getkran = NEXTRAN;} while (__getkran >= MAXSAFE(k)); \ + var = __getkran % (k);} +#define INITRANBYTIME ran_init_time(0) + +#define NAURNG_H +#endif |