SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Случайное число



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Максим
Специалист
Специалист



Joined: 27 Sep 2007
Posts: 61

PostPosted: Mon Nov 26, 2007 10:47 am    Post subject: Случайное число Reply with quote

Привет!
Мне нужно получить случайное число от 1 до 10. Как это сделать? Система 4.7
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Mon Nov 26, 2007 11:14 am    Post subject: Reply with quote

Можно выбирать:
1. Классы CL_ABAP_RANDOM*
2. Группа функций F052
3. ФМ BKK_RANDOM - на вход надо дать макс.предел, т.е. 10 в Вашем случае
4. поиск по маске*RANDOM* и *RND* в se37 тоже может дать результат
Back to top
View user's profile Send private message Blog
agatos
Участник
Участник



Joined: 01 Nov 2007
Posts: 49
Location: Germany, Norden

PostPosted: Mon Nov 26, 2007 7:00 pm    Post subject: Reply with quote

простая программка. Генерирует от 1 до 250 и записывает во внешнюю табличку.
REPORT z_schrtabl.
TABLES: zmyfirst.

DATA: ran_int LIKE qf00-ran_int.
DATA: workarea1 LIKE zmyfirst.

DO 10 TIMES.
CALL FUNCTION 'QF05_RANDOM_INTEGER'
EXPORTING
ran_int_max = 250
ran_int_min = 1
IMPORTING
ran_int = ran_int.

workarea1-nbr = ran_int.
* workarea2-number2 = ran_int.

INSERT zmyfirst FROM workarea1.

WRITE: ran_int.

ENDDO.
Back to top
View user's profile Send private message
[pip]
Участник
Участник



Joined: 26 Sep 2008
Posts: 2

PostPosted: Fri Sep 26, 2008 3:40 pm    Post subject: Reply with quote

John Doe wrote:
Можно выбирать:
1. Классы CL_ABAP_RANDOM*

решил использовать этот класс, но почему то он генерирует постоянно одинаковые числа: 3 раза компилировал и 3 раза одни и теже значения получались

Code:

REPORT  ZPAI_TEST2.
DATA prng TYPE REF TO CL_ABAP_RANDOM_PACKED.
data:   a TYPE CL_ABAP_RANDOM_PACKED=>P31_0,
           b TYPE CL_ABAP_RANDOM_PACKED=>P31_0,
           c TYPE CL_ABAP_RANDOM_PACKED=>P31_0,
           n type i value 5.
data: root1 type p DECIMALS 2,
      root2 type p DECIMALS 2,
      temp type p DECIMALS 2.
do n times.
  perform solution.
enddo.

form solution.

  if not prng is bound.
    prng = CL_ABAP_RANDOM_PACKED=>create( min = -10 max = 10 ).
  endif.

   a = prng->get_next( ).
   b = prng->get_next( ).
   c = prng->get_next( ).

  temp = b ** 2 - 4 * a * c .
  if temp >= 0.
    root1 = - b - sqrt( temp ).
    root2 = - b + sqrt( temp ).
    write: / 'a=',a,' ','b=',b,' ','c=',c,' ','root1=',root1,' ','root2=',root2.
  else.
    WRITE / 'Quadratic Root <0'.
  endif.
endform.       

в чем может быть дело??
а, и еще, почему у меня на экран в отчете выводится большой пробел после "=", а потом только значение?

заранее спасибо.
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 170
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Fri Sep 26, 2008 5:40 pm    Post subject: Reply with quote

Практически при работе с любой функцией генерации случ. чисел сначала нужна инициализация начальным значением, например текущей датой и временем.

У меня нет данного класса, версия старая, может метод seed инициализирует. Пример из ABAP language news

Code:
*Create 100 2-tupels of type P(8) with random seed:
DATA: prng   TYPE REF TO cl_abap_random_packed,
      seed   TYPE i, p1 TYPE p, p2 TYPE p.
seed = cl_abap_random=>seed( ).
prng = cl_abap_random_packed=>create( seed = seed
              min = -999999999999999 max = 999999999999999 ).
DO 100 TIMES.
  p1 = prng->get_next( ). p2 = prng->get_next( ).
  ...
ENDDO.
Back to top
View user's profile Send private message Blog Visit poster's website
[pip]
Участник
Участник



Joined: 26 Sep 2008
Posts: 2

PostPosted: Mon Sep 29, 2008 1:45 pm    Post subject: Reply with quote

спасибо, помогло.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.