zl程序教程

您现在的位置是:首页 >  其它

当前栏目

如何使用 ABAP 生成随机数

如何 生成 ABAP 随机数 使用
2023-09-14 09:02:43 时间

使用的这个标准的工具类:cl_abap_random_int.

*&---------------------------------------------------------------------*
*& Report  Z_MY_TEST01
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  z_my_test01.

DATA: ls_literal TYPE i VALUE 100,
      ls_random_gen TYPE REF TO cl_abap_random_int,
      t0 type i,
      t1 TYPE i,
      t2 TYPE i,
      t3 TYPE i,
      t4 TYPE i.

DATA: lt_standard TYPE STANDARD TABLE OF i," WITH NON-UNIQUE KEY table_line,
      lt_sorted TYPE SORTED TABLE OF i WITH NON-UNIQUE KEY table_line,
      lt_hash TYPE HASHED TABLE OF i WITH UNIQUE KEY table_line.

*      TRY.
CALL METHOD cl_abap_random_int=>create
  EXPORTING
*   SEED =
    min  = 0
    max  = 183647
  RECEIVING
    prng = ls_random_gen.
*       CATCH CX_ABAP_RANDOM .
*      ENDTRY.

GET RUN TIME FIELD t1.
DATA ls_rand_int TYPE i.
DO ls_literal TIMES.
  CALL METHOD ls_random_gen->get_next
    RECEIVING
      value = ls_rand_int.
  INSERT ls_rand_int INTO TABLE lt_standard.
ENDDO.
GET RUN TIME FIELD t2.
t0 = t2 - t1.
WRITE: / 'time: ', t0.


GET RUN TIME FIELD t3.
DO ls_literal TIMES.
  CALL METHOD ls_random_gen->get_next
    RECEIVING
      value = ls_rand_int.
  INSERT ls_rand_int INTO TABLE lt_sorted.
ENDDO.
GET RUN TIME FIELD t4.
t0 = t4 - t3.
WRITE: / 'time: ', t0.

*DO ls_literal TIMES.
*  CALL METHOD ls_random_gen->get_next
*    RECEIVING
*      value = ls_rand_int.
*  INSERT ls_rand_int INTO lt_hash.
*ENDDO.

DATA: ind TYPE i,
      tmp TYPE i.
*DO ls_literal TIMES.
*  READ TABLE lt_standard index ind INTO tmp.
*  ind = ind + 1.
*  WRITE: / tmp.
*ENDDO.

DO ls_literal TIMES.
  READ TABLE lt_sorted INDEX ind INTO tmp.
  ind = ind + 1.
  WRITE: / tmp.
ENDDO.