powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вывести 1000 случайных чисел
25 сообщений из 79, страница 2 из 4
Вывести 1000 случайных чисел
    #39511792
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РогафипНо я тут подумал, и понял. что в варианте
Код: plsql
1.
mod(trunc(dbms_random.VALUE(level, level+3)), 1000) +1



не будет 4-х дублей.


согласен

.....
stax
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39511793
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это уже не случайные числа
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39511796
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxЭто уже не случайные числа

dbms_random.VALUE - случайные?

......
stax
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39511799
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StaxandreymxЭто уже не случайные числа

dbms_random.VALUE - случайные?

......
staxдо тех пор, пока их не начинают использовать "это хочу, это не хочу"
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39511802
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StaxandreymxЭто уже не случайные числа

dbms_random.VALUE - случайные?

......
stax
Код: sql
1.
2.
3.
SELECT DBMS_RANDOM.VALUE (1, 1) AS RandomNumber
  FROM DUAL
CONNECT BY LEVEL <= 1000
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39511805
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxStaxпропущено...


dbms_random.VALUE - случайные?

......
stax
Код: sql
1.
2.
3.
SELECT DBMS_RANDOM.VALUE (1, 1) AS RandomNumber
  FROM DUAL
CONNECT BY LEVEL <= 1000



не подходит (из диапазона 1-1000)

.....
stax
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39511808
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

обоснуй :)
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39511814
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxStax,

обоснуй :)

при любом к-ве прогонов получим 1000 еденичек (что допускается, редкий случай - но возможен)

надо хотя-бы иногда из диапазана 1-1000 и хотя-бы иногда дубли

.....
stax
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39511886
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собсно... почему такая тема в форуме Oracle вообще вызывает трудность?

В любом языке программирования есть реализация функции shuffle (перемешивание).
На входе - коллекция. На выходе коллекция перемешанная настолько что
нет оснований говорить о какой-то исходной упорядоченности.

В Oracle надо просто сделать order by hashcode(.... набор потенциальных ключей ...) или
rowid.

Может потому-что операция "перемешивания" не применима к курсору?
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39512007
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСобсно... почему такая тема в форуме Oracle вообще вызывает трудность?

В любом языке программирования есть реализация функции shuffle (перемешивание).
На входе - коллекция. На выходе коллекция перемешанная настолько что
нет оснований говорить о какой-то исходной упорядоченности.

В Oracle надо просто сделать order by hashcode(.... набор потенциальных ключей ...) или
rowid.

Может потому-что операция "перемешивания" не применима к курсору?
20752559
в рерультате перемешивания дубли появятся?

......
stax
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39512037
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я спросил. Почему. Данная элементарная задача вызывает трудности для oracle кодера?
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39512047
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ спросил. Почему. Данная элементарная задача вызывает трудности для oracle кодера?

Ваше решения задачи с учетом дублей?

.....
stax
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39512065
не то?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select rn, count(*)
from (
select rn from (
select rownum rn from dual connect by level <= 1000 union all
select rownum rn from dual connect by level <= 1000 union all
select rownum rn from dual connect by level <= 1000
 )
order by dbms_random.value 
)
where rownum <= 1000 
group by rn 
order by count(*) desc, rn
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39512066
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax, не оптимально
Код: plsql
1.
 select mod(level, 1000) from dual connect by level< =1000*кол-во повторов 


"Смешать, но не взбалтывать" 1000шт
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39512278
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Декартовым произведением ещё можно.
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39662740
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select lvl
  from (select lvl
          from (select level lvl
                  from dual
                connect by level <= 1000
                UNION ALL
                select level lvl
                  from dual
                connect by level <= 1000
                UNION ALL
                select level lvl
                  from dual
                connect by level <= 1000)
         ORDER BY DBMS_RANDOM.value)
 where rownum <= 1000)
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39662744
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxifly,

предлагали. и утроюнионивание запроса для умножения строк на три не самый оптимальный подход.
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39662755
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-Maxifly,

утроюнионивание запроса для умножения строк на три не самый оптимальный подход.

А оптимальный какой?
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39662811
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxifly-2-Maxifly,

утроюнионивание запроса для умножения строк на три не самый оптимальный подход.А оптимальный какой?Более оптимально в твоем варианте считать до level/3 <= 1000 без юниона. А самый оптимальный указан в первом же ответе "Просто сгенерировать последовательность от 1 до 1000".
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39662911
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeananНеобходимо вывести 1000 случайных чисел от 1 до 1000
Просто вывести числа от 1 до 1000.
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39662919
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leanan,

всё просто, схема:

генеришь таличку N, R из 3*1000 строк
в N заполняешь числа от 1 до 1000 по 3 раза, в R заносишь рандомное число

дальше
Select n form T order by R limit 1000
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39662963
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

21505134

....
stax
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39663018
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-Maxiflyпропущено...
А оптимальный какой?Более оптимально в твоем варианте считать до level/3 <= 1000 без юниона.".

Может я чего не понял, но
Код: plsql
1.
select level from dual connect by level/3 <= 1000

возвращает числа от 1 до 3000
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39663033
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxifly,

select ...level/3... from ...

....
stax
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39663326
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,
Два арифметических действия (ну ok - можно и одно) (причем деления. Причем с округлением) это реально эффективнее двух UNION ALL?
...
Рейтинг: 0 / 0
25 сообщений из 79, страница 2 из 4
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вывести 1000 случайных чисел
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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