Bruce Momjian writes:
> Because random returns a double, I think it is very possible that we
> could return 1 due to rounding,
Not unless your machine has a "double" type with less than 32 bits of
precision, which seems pretty unlikely. It'd be sufficient to do
/* result 0.0 <= x < 1.0
src/backend/utils/adt/float.c:
/*
* drandom - returns a random number
*/
Datum
drandom(PG_FUNCTION_ARGS)
{
float8 result;
/* result 0.0-1.0 */
result = ((double) random()) / ((double) MAX_RANDOM_VALUE);
PG_RETURN_FLOAT8(result);
}
Andrew - Supernews wrote:
> src/backend/utils/adt/float.c:
>
> /*
> *drandom - returns a random number
> */
> Datum
> drandom(PG_FUNCTION_ARGS)
> {
> float8 result;
>
> /* result 0.0-1.0 */
> result = ((double) random()) / ((double) MAX_RANDOM_VALU