所以我为一个研究项目拼凑了一个随机数生成器。它的作用是生成一个随机数,然后根据第一个数字的值生成更多随机数。
到目前为止,它工作得很好,我唯一需要它停止做的事情就是生成相同的数字两次。
DATA :
lv_MinI TYPE i VALUE 2,
lv_MaxI TYPE i VALUE 6,
lv_RndI TYPE i,
lv_RndII TYPE i,
lv_i TYPE i VALUE 10.
DO 1 TIMES.
CALL FUNCTION 'QF05_RANDOM_INTEGER'
EXPORTING
ran_int_max = lv_MaxI
ran_int_min = lv_MinI
IMPORTING
ran_int = lv_RndI.
WRITE: / lv_RndI.
ULINE.
DO lv_RndI TIMES.
CALL FUNCTION 'QF05_RANDOM_INTEGER'
EXPORTING
ran_int_max = lv_MaxI
ran_int_min = lv_MinI
IMPORTING
ran_int = lv_RndII.
WRITE: / lv_RndII.
ENDDO.
ENDDO.
这是输出:
5
4
6
4
3
4
如何停止生成数字 4 三次?
标准伪随机数生成器的设计看起来好像没有受到先前事件的影响。这意味着它偶尔会输出重复的数字。就像骰子有可能连续两次出现相同的数字一样。
如果你不想要重复的数字,那么你不应该掷骰子,你应该发牌。
我的意思是制作一个洗牌袋。
lt_shufflebag
lv_rand
之间的随机数 lines( lt_shufflebag )
来绘制值,然后使用 READ TABLE lt_shufflebag INDEX lv_rand
获取该表行中的值DELETE TABLE lt_shufflebag INDEX lv_rand
删除该表格行以删除您刚刚读取的行(该行之后的行将向下移动,因此表格最终会少一行)。