PostgreSQL Source Code git master
geqo_random.c
Go to the documentation of this file.
1/*------------------------------------------------------------------------
2 *
3 * geqo_random.c
4 * random number generator
5 *
6 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
7 * Portions Copyright (c) 1994, Regents of the University of California
8 *
9 * src/backend/optimizer/geqo/geqo_random.c
10 *
11 *-------------------------------------------------------------------------
12 */
13
14#include "postgres.h"
15
17
18void
20{
22
23 pg_prng_fseed(&private->random_state, seed);
24}
25
26double
28{
30
31 return pg_prng_double(&private->random_state);
32}
33
34int
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}
static GeqoPrivateData * GetGeqoPrivateData(PlannerInfo *root)
Definition: geqo.h:85
void geqo_set_seed(PlannerInfo *root, double seed)
Definition: geqo_random.c:19
int geqo_randint(PlannerInfo *root, int upper, int lower)
Definition: geqo_random.c:35
double geqo_rand(PlannerInfo *root)
Definition: geqo_random.c:27
Datum lower(PG_FUNCTION_ARGS)
Definition: oracle_compat.c:49
Datum upper(PG_FUNCTION_ARGS)
Definition: oracle_compat.c:80
double pg_prng_double(pg_prng_state *state)
Definition: pg_prng.c:268
uint64 pg_prng_uint64_range(pg_prng_state *state, uint64 rmin, uint64 rmax)
Definition: pg_prng.c:144
void pg_prng_fseed(pg_prng_state *state, double fseed)
Definition: pg_prng.c:102
tree ctl root
Definition: radixtree.h:1857