seed(种子)

随机数中的种子是指用于生成伪随机数的初始数值。

在计算机科学中,随机数种子(random seed)是一个重要的概念,它用于初始化伪随机数生成器。伪随机数生成器是一种算法,通过一定的数学运算生成看似随机的数字序列。这些数字序列在实际应用中通常具有真实随机数的所有概率性质和统计性质,尽管它们是通过确定的算法生成的,因此被称为伪随机数。种子数(seed)是这些算法的起点,它决定了生成的随机数序列的起始状态。

计算机所产生的随机数都是伪随机数,它们以一个真随机数(种子)作为初始条件,然后通过一定的算法不断迭代产生随机数。这个真随机数(种子)可以是基于某种真实随机事件的结果,如当前时间的毫秒数或其他不可预测的数值。通过这种方式,即使是在确定性的计算环境中,也能模拟出看似随机的行为。

此外,为了生成不同的随机数序列,可以将种子值设置为依赖于时间或其他变化因素的值。例如,在.NET Framework中,可以通过将种子值设置为当前时间的时钟周期数或使用系统时钟来生成种子值。这样做的好处是,每次程序启动时,由于种子值的变化,生成的随机数序列也会不同,从而增加了随机性的真实性。

在同样的种子下,每次运行程序生成的随机数序列都是相同的。

使用方法

使用cl_abap_random_int类生成整型随机数;
使用cl_abap_random_float类生成浮点随机数;
使用cl_abap_random_decfloat16类生成decfloat16类型随机数;
使用cl_abap_random_packed类生成P类型随机数;
使用cl_abap_random_packed_dec1-10类生成p类型decimal1-10随机数;

  DATA:lo_random_int TYPE REF TO cl_abap_random_int.  
  DATA:lo_random_float TYPE REF TO cl_abap_random_float.  
  DATA:lo_random_decfloat16 TYPE REF TO cl_abap_random_decfloat16.  
  DATA:lo_random_decfloat34 TYPE REF TO cl_abap_random_decfloat34.  
  DATA:lo_random_packed TYPE REF TO cl_abap_random_packed.  
  "其他類cl_abap_random_packed_dec1~10,返回數據類型p,decimal1~10  
  DATA:lv_int TYPE i.  
  DATA:lv_float TYPE float.  
  DATA:lv_dec16 TYPE decfloat16.  
  DATA:lv_dec34 TYPE decfloat34.  
  DATA:lv_packed TYPE p LENGTH 16 DECIMALS 0.  
  "返回i  
  lo_random_int = cl_abap_random_int=>create( seed = 1 min = 0 max = 1000 ).  
  "返回f  
  lo_random_float = cl_abap_random_float=>create( seed = 1 ).  
  "返回DECFLOAT16  
  lo_random_decfloat16 = cl_abap_random_decfloat16=>create( seed = 1 ).  
  "返回DECFLOAT34  
  lo_random_decfloat34 = cl_abap_random_decfloat34=>create( seed = 1 ).  
  "返回p,decimal 0  
  lo_random_packed = cl_abap_random_packed=>create( seed = 1 min = 1 max = 9999 ).  
  DO 20 TIMES.  
    lv_int = lo_random_int->get_next( ).  
    lv_float = lo_random_float->get_next( ).  
    lv_dec16 = lo_random_decfloat16->get_next( ).  
    lv_dec34 = lo_random_decfloat34->get_next( ).  
    WRITE:/ lv_int,lv_float,lv_dec16,lv_dec34.  
  ENDDO.