PostgreSQL Source Code git master
geqo_random.c File Reference
#include "postgres.h"
#include "optimizer/geqo_random.h"
Include dependency graph for geqo_random.c:

Go to the source code of this file.

Functions

void geqo_set_seed (PlannerInfo *root, double seed)
 
double geqo_rand (PlannerInfo *root)
 
int geqo_randint (PlannerInfo *root, int upper, int lower)
 

Function Documentation

◆ geqo_rand()

double geqo_rand ( PlannerInfo root)

Definition at line 27 of file geqo_random.c.

28{
30
31 return pg_prng_double(&private->random_state);
32}
static GeqoPrivateData * GetGeqoPrivateData(PlannerInfo *root)
Definition: geqo.h:85
double pg_prng_double(pg_prng_state *state)
Definition: pg_prng.c:268
tree ctl root
Definition: radixtree.h:1857

References GetGeqoPrivateData(), pg_prng_double(), and root.

Referenced by linear_rand().

◆ geqo_randint()

int geqo_randint ( PlannerInfo root,
int  upper,
int  lower 
)

Definition at line 35 of file geqo_random.c.

36{
38
39 /*
40 * In current usage, "lower" is never negative so we can just use
41 * pg_prng_uint64_range directly.
42 */
43 return (int) pg_prng_uint64_range(&private->random_state, lower, upper);
44}
Datum lower(PG_FUNCTION_ARGS)
Definition: oracle_compat.c:49
Datum upper(PG_FUNCTION_ARGS)
Definition: oracle_compat.c:80
uint64 pg_prng_uint64_range(pg_prng_state *state, uint64 rmin, uint64 rmax)
Definition: pg_prng.c:144

References GetGeqoPrivateData(), lower(), pg_prng_uint64_range(), root, and upper().

Referenced by edge_failure(), gimme_gene(), gimme_tour(), and init_tour().

◆ geqo_set_seed()

void geqo_set_seed ( PlannerInfo root,
double  seed 
)

Definition at line 19 of file geqo_random.c.

20{
22
23 pg_prng_fseed(&private->random_state, seed);
24}
void pg_prng_fseed(pg_prng_state *state, double fseed)
Definition: pg_prng.c:102

References GetGeqoPrivateData(), pg_prng_fseed(), and root.

Referenced by geqo().