sql Fisher-Yates在PL / SQL中进行了随机播放

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql Fisher-Yates在PL / SQL中进行了随机播放相关的知识,希望对你有一定的参考价值。

DECLARE 
  TYPE tab_t IS TABLE OF VARCHAR2(20); 
  tab tab_t 
        := tab_t('11', 
                 '22', 
                 '33', 
                 '44', 
                 '55'); 
  cnt NUMBER; 
  idx NUMBER; 
  tmp VARCHAR2(20); 
BEGIN 
  DBMS_RANDOM.seed(TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));

  cnt := CEIL(DBMS_RANDOM.VALUE(0, tab.COUNT)); 
  FOR i IN tab.FIRST .. cnt LOOP 
    idx := CEIL(DBMS_RANDOM.VALUE(i, tab.COUNT)); 
    tmp := tab(idx); 
    tab(idx) := tab(i); 
    tab(i) := tmp; 
    DBMS_OUTPUT.put(tab(i) || ' '); 
  END LOOP; 
  DBMS_OUTPUT.new_line; 
  DBMS_RANDOM.terminate; 
END;

以上是关于sql Fisher-Yates在PL / SQL中进行了随机播放的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL语法简介(匿名PL/SQL块)

PL/SQL编程_概述

PL/SQL概述

PL/SQL开发中动态SQL的使用方法

PL/SQL数据库开发那点事

PL/SQL 编程