PostgreSQL不使用扩展,生成随机int8值,生成均匀分布的随机int8值
在PostgreSQL中,如果你想生成均匀分布的随机int8
(8字节整数)值,你可以使用random()
函数,它返回一个[0.0, 1.0)之间的随机浮点数。要生成int8
范围内的值,你可以将random()
函数的结果缩放到你想要的范围。
例如,生成[0, 2^63-1]范围内的随机int8
值,可以使用以下代码:
SELECT FLOOR(random() * 18446744073709551616)::bigint AS random_int8;
这里,18446744073709551616
是2^63
,是int8
类型可以表示的最大值加一。random()
函数生成一个[0.0, 1.0)的浮点数,然后乘以2^63
得到[0.0, 2^63)范围内的数,接着使用FLOOR
函数取下整,转换为bigint
类型。
如果你想生成其他范围的int8
值,只需相应地调整乘数即可。例如,生成[100, 200)范围内的值:
SELECT FLOOR(random() * 100 + 100)::bigint AS random_int8;
这里,random()
生成一个[0.0, 1.0)的浮点数,乘以100后变成[0.0, 100.0),然后加上100后变成[100.0, 200.0),最后取下整得到[100, 200)范围内的随机整数。
评论已关闭