powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Функция для получения случайного числа?
11 сообщений из 11, страница 1 из 1
Функция для получения случайного числа?
    #32041970
Фотография Tаrantino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для Оракл совсем недавно начал програмировать, и поэтому наверное задаю глупый вопрос, в общем так есть ли в Оракл функция для получения случайного числа?
...
Рейтинг: 0 / 0
Функция для получения случайного числа?
    #32041975
nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DBMS_RANDOM
...
Рейтинг: 0 / 0
Функция для получения случайного числа?
    #32041998
none
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBMS_RANDOM на 8.1.7 - дико тормозной, потому как написан на PL/SQL. А от 8.1.5 - нестабильный.
О 9 не вкурсе.
Но есть некая штука, над которой можно поизвращаться, это SYS_GUID()
Смотрите:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
SQL> SELECT SYS_GUID() FROM DUAL;

SYS_GUID()
 --------------------------------
 
E88A92B5618A4D2786D1CB9FFFEE5B5B

SQL> SELECT SYS_GUID() FROM DUAL;

SYS_GUID()
 --------------------------------
 
CE2D4AAFB531405CAB1CEC2F4AABD561

SQL> 
SQL> SELECT SYS_GUID() FROM DUAL;

SYS_GUID()
 --------------------------------
 
15C54A70C0934497A33A9F0756D5CECD

SQL> SELECT SYS_GUID() FROM DUAL;

SYS_GUID()
 --------------------------------
 
D5A876EBFFC247E88D1747E5FD5BAE30

SQL> SELECT SYS_GUID() FROM DUAL;

SYS_GUID()
 --------------------------------
 
F5530E4DD1334899B4E5C51011544EDB


Ну чем не набор случайных чисел?
...
Рейтинг: 0 / 0
Функция для получения случайного числа?
    #32042045
Фотография Tаrantino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Классно, всем спасибо!
Мне понравилось это:
SELECT SYS_GUID() FROM DUAL;
...
Рейтинг: 0 / 0
Функция для получения случайного числа?
    #32042075
alvako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to: None

Что значит "дико тормозной, потому как написан на PL/SQL" ??? Кто вам такое сказал? И на чём должно быть написано чтобы быстро было?

Я сейчас замерил: 1 миллион вызовов функции DBMS_RANDOM.value(1,100) занял 30 секунд. Это по вашему "дико тормозной"?
...
Рейтинг: 0 / 0
Функция для получения случайного числа?
    #32042082
nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to: None
sys_guid генерит, насколько я знаю, уникальное значение
а уникальное значение и случайное значение это далеко не одно и тоже
...
Рейтинг: 0 / 0
Функция для получения случайного числа?
    #32042083
alvako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 None
Продолжение:
а 1 миллион вызовов вашей функции SYS_GUID() - занял 198 секунд. А она по вашему почему тормозит?

Кроме того в DBMS_RANDOM куча функций для генерации случайных чисел, стрингов заданного размера, заданного набора символов, заданного случайного распределения.

--
Oracle 8.1.7
...
Рейтинг: 0 / 0
Функция для получения случайного числа?
    #32042444
none
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to nick: а я собственно и не утверждал что SYS_GUID генерит случайные распределенные по какомуто закону величины. Но для многих случаев и этого хватает.

to alvaco:
>>Что значит "дико тормозной, потому как написан на PL/SQL" ??? Кто вам такое сказал? И на чём должно быть написано чтобы быстро было?

Думаю на том, что НЕ должно интерпритироваться.

Не помню, где точно я пользовался DBMS_RANDOM, но точно помню, что его производительность полностью НЕ устроила. Посмотрю, и отвечу точно.
...
Рейтинг: 0 / 0
Функция для получения случайного числа?
    #32042509
alvako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 None

>>И на чём должно быть написано чтобы быстро было?
>Думаю на том, что НЕ должно интерпритироваться.

А кто вам сказал что PL/SQL package при запуске интерпретируется??? Они же в скомпилированном виде лежат.

> но точно помню, что производительность DBMS_RANDOM полностью НЕ устроила
Ага, и вы использовали SYS_GUID, который его медленнее. Да и очень любопытно, где это вам не хватило его производительности (всё же 1 млн. вызовов за 30 сек. это очень немало.).
...
Рейтинг: 0 / 0
Функция для получения случайного числа?
    #32042668
none
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, возможно мне придется извиниться перед читателями форума и господами Tarantino и alvako в первую очередь.

DBMS_RANDOM работает вполне приемлемо

Насчет этого не уверен:
>>А кто вам сказал что PL/SQL package при запуске интерпретируется??? Они же в скомпилированном виде лежат.

Дайте плиз ссылку на документацию, если не сложно.
Хотя вот тут читаю:
PL/SQL User's Guide and Reference/Overview/Advantages of PL/SQL/Better Performance:

PL/SQL stored procedures are compiled once and stored in executable form, so procedure calls are quick and efficient.

Что значит executable form - комманды, которые исполняються процессором (машинный код)? Или какая-то прослойка, которая просто (допустим PL/SQL Engine'ром) переводится в машинный код?
...
Рейтинг: 0 / 0
Функция для получения случайного числа?
    #32042710
alvako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 None

Oracle8i Concepts
#18 Procedures and Packages

The PL/SQL compiler parses the source code and produces a parsed representation of the source code, called a parse tree
The PL/SQL compiler generates the pseudocode, or P code, based on the parsed code. The PL/SQL engine executes this when the procedure or package is invoked.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Функция для получения случайного числа?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]