是否可以使用相同的种子随机生成不同的记录集
Can different set of records be randomly generated with the same seed
我有 2 个与 Oracle 中的包 dbms_random 相关的问题:
不知道dbms_random包中的initialize和seed有区别吗?
我需要从较大的集合中随机化固定数量的记录,但我希望观察到的记录保持稳定,直到我更改种子。
查看记录后,有没有办法生成不同的记录集但仍然保留种子,请问是否有重置或重新初始化具有相同种子的包的功能?
下面是我的示例代码,用于说明目的。我可以生成一组不同的记录但仍保留原始种子吗?
begin
--dbms_random.initialize(100);
dbms_random.seed(100);
SELECT *
FROM (
SELECT *
FROM table
ORDER BY DBMS_RANDOM.value)
WHERE rownum < 21;
end;
"I wonder if there is a difference between initialize and seed in the dbms_random package"
是的,有区别。 initialize()
已 弃用 并且仅在 DBMS_RANDOM 中保留以实现向后兼容性。所有新代码都应使用 seed()
。这是 covered in the Oracle documentation.
is there a way to generate a different set of records but still keep the seed
不适用于您发布的代码示例。这将每次设置种子,每次都会为您提供相同的记录集。要从同一种子生成多组不同的记录,您需要将种子设置与记录生成分开。
我有 2 个与 Oracle 中的包 dbms_random 相关的问题:
不知道dbms_random包中的initialize和seed有区别吗? 我需要从较大的集合中随机化固定数量的记录,但我希望观察到的记录保持稳定,直到我更改种子。
查看记录后,有没有办法生成不同的记录集但仍然保留种子,请问是否有重置或重新初始化具有相同种子的包的功能?
下面是我的示例代码,用于说明目的。我可以生成一组不同的记录但仍保留原始种子吗?
begin
--dbms_random.initialize(100);
dbms_random.seed(100);
SELECT *
FROM (
SELECT *
FROM table
ORDER BY DBMS_RANDOM.value)
WHERE rownum < 21;
end;
"I wonder if there is a difference between initialize and seed in the dbms_random package"
是的,有区别。 initialize()
已 弃用 并且仅在 DBMS_RANDOM 中保留以实现向后兼容性。所有新代码都应使用 seed()
。这是 covered in the Oracle documentation.
is there a way to generate a different set of records but still keep the seed
不适用于您发布的代码示例。这将每次设置种子,每次都会为您提供相同的记录集。要从同一种子生成多组不同的记录,您需要将种子设置与记录生成分开。