Age Owner TLA Line data Source code
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 :
16 : #include "optimizer/geqo_random.h"
17 :
18 : void
5948 tgl@sss.pgh.pa.us 19 CBC 21 : geqo_set_seed(PlannerInfo *root, double seed)
20 : {
69 rhaas@postgresql.org 21 GNC 21 : GeqoPrivateData *private = GetGeqoPrivateData(root);
22 :
1430 tgl@sss.pgh.pa.us 23 CBC 21 : pg_prng_fseed(&private->random_state, seed);
5948 24 21 : }
25 :
26 : double
27 2262 : geqo_rand(PlannerInfo *root)
28 : {
69 rhaas@postgresql.org 29 GNC 2262 : GeqoPrivateData *private = GetGeqoPrivateData(root);
30 :
1430 tgl@sss.pgh.pa.us 31 CBC 2262 : return pg_prng_double(&private->random_state);
32 : }
33 :
34 : int
35 2955 : geqo_randint(PlannerInfo *root, int upper, int lower)
36 : {
69 rhaas@postgresql.org 37 GNC 2955 : GeqoPrivateData *private = GetGeqoPrivateData(root);
38 :
39 : /*
40 : * In current usage, "lower" is never negative so we can just use
41 : * pg_prng_uint64_range directly.
42 : */
1430 tgl@sss.pgh.pa.us 43 CBC 2955 : return (int) pg_prng_uint64_range(&private->random_state, lower, upper);
44 : }
|