postgresql – 通过循环在[0,1001]中生成随机数的非重复随机数

postgresql – 通过循环在[0,1001]中生成随机数的非重复随机数,第1张

概述我需要在plpgsql中生成一个随机数的非重复随机数.非重复数字应落在[1,1001]范围内.但是,代码生成的数字超过1001. directed2number := trunc(Random()*7+1);counter := directed2numberwhile counter > 0loopto_point := trunc((random() * 1/directed2numb 我需要在plpgsql中生成一个随机数的非重复随机数.非重复数字应落在[1,1001]范围内.但是,代码生成的数字超过1001.
directed2number := trunc(Random()*7+1);counter := directed2numberwhile counter > 0loopto_point := trunc((random() * 1/directed2number - counter/directed2number + 1) * 1001 +1);......counter := counter - 1;end loop;
如果我明白的话

>您需要一个随机数(1到8)的随机数.
>随机数跨越1到1001.
>随机数必须是唯一的.没有一次出现.

CREATE OR REPLACE FUNCTION x.unique_rand_1001()RETURNS SetoF integer AS$body$DECLARE    nrnr    int := trunc(random()*7+1);  -- number of numbersBEGIN    RETURN query    SELECT (1000 * random())::integer + 1    FROM   generate_serIEs(1,nrnr*2)    GROUP  BY 1    liMIT  nrnr;END;$body$LANGUAGE plpgsql VolATILE;

呼叫:

SELECT x.unique_rand_1001();

GROUP BY使数字独一无二.我生成的数字是所需数量的两倍,以便在删除重复项时提供足够的数字.根据任务的给定维度(最多8个1001个数字),天文数据不太可能没有足够的数字.最坏情况:返回查看器编号.

总结

以上是内存溢出为你收集整理的postgresql – 通过循环在[0,1001]中生成随机数的非重复随机数全部内容,希望文章能够帮你解决postgresql – 通过循环在[0,1001]中生成随机数的非重复随机数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1165526.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存