[Fwd: Re: surprising results with random()]
ries van Twisk wrote:
Jessi,
should the function not look like this???
CREATE OR REPLACE VIEW test_view AS
SELECT
CASE
WHEN random() < .333333333 THEN '1'
WHEN random() < .5 THEN '2'
ELSE '3'
END AS test_valueFROM client;
actually, I'd think that should be .66666
but... wouldn't floor(random() * 3.0) + 1 be a simpler way to do this?
John R Pierce <pierce@hogranch.com> writes:
ries van Twisk wrote:
should the function not look like this???
CREATE OR REPLACE VIEW test_view AS
SELECT
CASE
WHEN random() < .333333333 THEN '1'
WHEN random() < .5 THEN '2'
ELSE '3'
END AS test_valueFROM client;
actually, I'd think that should be .66666
Nah, ries is correct. Think of it this way: one-third of the time the
first WHEN succeeds, and you get '1'. In *half of the remaining cases*,
you want '2', so the second test should be against 0.5.
but... wouldn't floor(random() * 3.0) + 1 be a simpler way to do this?
Agreed...
regards, tom lane