これがすべての列で異なる乱数を返すのはなぜですか? を使えばいつも同じ乱数になると思っていましたsetseed()
。しかし、 の呼び出しごとに乱数の新しい定数ベクトルがあるようですrandom()
。
select setseed(0.5);
select
random(),
random(),
random()
from
generate_series(1,20);
毎回返します:
0.798512778244913;0.518533017486334;0.0734698106534779
0.563445927575231;0.00328421639278531;0.859378454275429
0.537976825609803;0.567121817730367;0.311047440394759
0.420166166499257;0.203177386429161;0.125661129131913
0.754696044139564;0.424046442843974;0.202209176961333
...
これで、(Ed Heal のおかげで) 行によって乱数が生成されることがわかりました。これを証明するには:
select setseed(0.5);
select random(), random(), random();
select setseed(0.5);
select random()
union all
select random()
union all
select random();
これは少し奇妙ではありませんか?つまり、列単位で機能しないのはなぜですか?