将文本转换为 -1.0 和 1.0 之间的双精度以用作种子 [postgresql]



我需要使用基于来自现有表的种子的random()生成一个随机值。种子是文本,但setseed()需要在-1.01.0之间加双精度。原因是我需要给定数据库中的现有值的随机数相同。

我想定义一个函数,该函数获取种子并根据该种子返回一个随机数:

CREATE OR REPLACE FUNCTION random_with_seed(seed text) RETURNS double precision AS
$$
DECLARE casted double precision;
BEGIN
-- cast seed to a double between -1.0 and 1.0
casted = ???
setseed(casted);
RETURN random();
END
$$ LANGUAGE plpgsql IMMUTABLE;

将文本转换为setseed()的有效参数的最佳方法是什么?

SELECT cos(hashtext('some text'));
cos         
---------------------
-0.9092973651315766
(1 row)