|
|
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Необходимо вывести 1000 случайных чисел от 1 до 1000, таких что не повторяются в этой последовательности, больше чем 3 раза. Собственно вывод чисел SELECT trunc(dbms_random.VALUE(1, 1000)) random_val FROM dual CONNECT BY LEVEL <= 1000; Вопрос в том как сделать чтобы числа не повторялись больше чем 3 раза? Буду очень благодарен за помощь!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2017, 20:21 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Leanan, Просто сгенерировать последовательность от 1 до 1000 и рандомно отсортировать её :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2017, 21:40 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Тут можно делать union нескольких последовательностей от 1 до 1000. Не более трех. И сортировать по hashcode(номер последовательности, level). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 00:48 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Добрый Э - ЭхLeanan, Просто сгенерировать последовательность от 1 до 1000 и рандомно отсортировать её :) імхо от сортироки к-во повторов не уменьшится напр сгенерилось пять пятерок, надо оставить три и две догенерить .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 10:25 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
StaxДобрый Э - ЭхПросто сгенерировать последовательность от 1 до 1000 и рандомно отсортировать её :)от сортироки к-во повторов не уменьшитсяИ не увеличится! Не уменьшенное и не увеличенное количество 1 будет равно ровно 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 12:23 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
последовательность от 1 до 1000Staxпропущено... от сортироки к-во повторов не уменьшитсяИ не увеличится! Не уменьшенное и не увеличенное количество 1 будет равно ровно 1. поясню на примере напр dbms_random плохо генерит (так звезды стали) сгенерил 700 пятерек и 300 восьмерок по условию "числа не повторялись больше чем 3 раза" (подходит 6-ть чисел - 3 пятерки и 3 восьмерки) нам надо догенерить 994 числа среди корых тоже могут быть повторяющиеся пробовал моделькой, но пока не придумал как посчитать в тч повторяющиеся, отбросив повторы больше трех сортировка тут нипричем ps можно в лоб генерить напр 2000 чисел и лишнее отбросить, но гарантии то нет что и 2000 хватит ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 12:46 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Stax, Можно например так попробовать, но гарантии тоже нет и будет уникальность (но 1 точно не более 3 ) Код: plsql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 13:03 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
MaximaXXL, в догонку селект вернул 999 записей, а надо 1000 ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 13:20 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Stax, Подожди, пусть автор даст объяснение почему его не устраивает вариант Доброго Эха, а уж потом будешь постить в тему свои неудержимые измышлизмы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 13:28 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 13:35 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Бракованный финский угорьStax, Подожди, пусть автор даст объяснение почему его не устраивает вариант Доброго Эха, а уж потом будешь постить в тему свои неудержимые измышлизмы. понятно что автору может подойти решение Добрый Э - Эх но есть и другая задача (с дублями), я ее пока что не решил (хотел моделькой) .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 13:37 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Рогафип, красивый вариат допилить вариант random_val >1000 ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 13:51 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Stax, Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 13:59 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
РогафипStax, Код: plsql 1. 2. не пойдет 1-4 --> 1.7 2-5 --> 1.9 3-6 --> 1.1 999-1002 -->1001,3 .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 14:15 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Stax, mod(x,1000) < 1000 для любого x ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 14:30 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Чтоб совсем точно были значения от 1 до 1000 Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 14:38 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
StaxMaximaXXL, в догонку селект вернул 999 записей, а надо 1000 ..... stax Согласен Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 14:43 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
РогафипStax, mod(x,1000) < 1000 для любого x да, но возможен "4-й дубль", я ж привел пример .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 14:53 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
MaximaXXLStaxMaximaXXL, в догонку селект вернул 999 записей, а надо 1000 ..... stax Согласен Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. order by 1 портит картинку маленкие числа подтянет, большие отбросит зы order by nvl2(lag,level,null) при условии что 2000 хватит .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 15:14 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
StaxРогафипStax, mod(x,1000) < 1000 для любого x да, но возможен "4-й дубль", я ж привел пример .... stax А, в этом смысле. Согласен. Тогда можно просто level+3 заменить на level+2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 15:23 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
РогафипА, в этом смысле. Согласен. Тогда можно просто level+3 заменить на level+2. халява, троек "почти" не будет ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 15:40 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Вот так: Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 15:54 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
StaxРогафипА, в этом смысле. Согласен. Тогда можно просто level+3 заменить на level+2. халява, троек "почти" не будет ..... stax ) Да, не красиво. Но я тут подумал, и понял. что в варианте Код: plsql 1. не будет 4-х дублей. Дубли возможны из-за того, что в начале и в конце есть повторяющиеся интервалы, из которых случайно выбираются значения. Сразу оговоримся, что trunc(dbms_random.VALUE(1, 1+3)) выдает только одно из трех значений - 1,2,3 (ибо The VALUE function produces numbers in the range [0,1) with 38 digits of precision) 1-2-3 2-3-4 .... 999-1000-1001 1000-1001-1002 Рассмотрим эти случаи. из первого интервала случайно выбрали 1. Тогда mod(trunc(1, 1000) +1 = 2. Из каких еще интервалов можно получить 2 ? из 2-3-4 - нет. из 999-1000-1001 - если выбрать 1001, из 1000-1001-1002 - если выбрать 1001. Итого итоговая двойка может встретиться только трижды, а не четырежды. Если из первого интервала выбрали 2, то в итоге mod(trunc(1, 1000) +1 = 3. Из второго 2 - получим второе итоговое число 3. Ну и из последнего интервала 1002 - вот она и третья тройка. Так что никаких четверных дублей вроде не получается.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 15:57 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Рогафип, Исправление - в предыдущем посте mod(trunc(1),1000)+1 и mod(trunc(2),1000)+1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 16:16 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
РогафипНо я тут подумал, и понял. что в варианте Код: plsql 1. не будет 4-х дублей. согласен ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 16:41 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Это уже не случайные числа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 16:42 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
andreymxЭто уже не случайные числа dbms_random.VALUE - случайные? ...... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 16:44 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
StaxandreymxЭто уже не случайные числа dbms_random.VALUE - случайные? ...... staxдо тех пор, пока их не начинают использовать "это хочу, это не хочу" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 16:49 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
StaxandreymxЭто уже не случайные числа dbms_random.VALUE - случайные? ...... stax Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 16:51 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
andreymxStaxпропущено... dbms_random.VALUE - случайные? ...... stax Код: sql 1. 2. 3. не подходит (из диапазона 1-1000) ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 16:58 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Stax, обоснуй :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 17:04 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
andreymxStax, обоснуй :) при любом к-ве прогонов получим 1000 еденичек (что допускается, редкий случай - но возможен) надо хотя-бы иногда из диапазана 1-1000 и хотя-бы иногда дубли ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 17:11 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Собсно... почему такая тема в форуме Oracle вообще вызывает трудность? В любом языке программирования есть реализация функции shuffle (перемешивание). На входе - коллекция. На выходе коллекция перемешанная настолько что нет оснований говорить о какой-то исходной упорядоченности. В Oracle надо просто сделать order by hashcode(.... набор потенциальных ключей ...) или rowid. Может потому-что операция "перемешивания" не применима к курсору? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 20:31 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
maytonСобсно... почему такая тема в форуме Oracle вообще вызывает трудность? В любом языке программирования есть реализация функции shuffle (перемешивание). На входе - коллекция. На выходе коллекция перемешанная настолько что нет оснований говорить о какой-то исходной упорядоченности. В Oracle надо просто сделать order by hashcode(.... набор потенциальных ключей ...) или rowid. Может потому-что операция "перемешивания" не применима к курсору? 20752559 в рерультате перемешивания дубли появятся? ...... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2017, 09:31 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Я спросил. Почему. Данная элементарная задача вызывает трудности для oracle кодера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2017, 10:14 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
maytonЯ спросил. Почему. Данная элементарная задача вызывает трудности для oracle кодера? Ваше решения задачи с учетом дублей? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2017, 10:23 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2017, 10:47 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Stax, не оптимально Код: plsql 1. "Смешать, но не взбалтывать" 1000шт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2017, 10:48 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Декартовым произведением ещё можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2017, 15:30 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2018, 00:04 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Maxifly, предлагали. и утроюнионивание запроса для умножения строк на три не самый оптимальный подход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2018, 00:16 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
-2-Maxifly, утроюнионивание запроса для умножения строк на три не самый оптимальный подход. А оптимальный какой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2018, 01:19 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Maxifly-2-Maxifly, утроюнионивание запроса для умножения строк на три не самый оптимальный подход.А оптимальный какой?Более оптимально в твоем варианте считать до level/3 <= 1000 без юниона. А самый оптимальный указан в первом же ответе "Просто сгенерировать последовательность от 1 до 1000". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2018, 08:07 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
LeananНеобходимо вывести 1000 случайных чисел от 1 до 1000 Просто вывести числа от 1 до 1000. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2018, 10:57 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Leanan, всё просто, схема: генеришь таличку N, R из 3*1000 строк в N заполняешь числа от 1 до 1000 по 3 раза, в R заносишь рандомное число дальше Select n form T order by R limit 1000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2018, 11:25 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
-2-Maxiflyпропущено... А оптимальный какой?Более оптимально в твоем варианте считать до level/3 <= 1000 без юниона.". Может я чего не понял, но Код: plsql 1. возвращает числа от 1 до 3000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2018, 13:46 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Maxifly, select ...level/3... from ... .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2018, 14:03 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Stax, Два арифметических действия (ну ok - можно и одно) (причем деления. Причем с округлением) это реально эффективнее двух UNION ALL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 00:29 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)Leanan, всё просто, схема: генеришь таличку N, R из 3*1000 строк в N заполняешь числа от 1 до 1000 по 3 раза, в R заносишь рандомное число дальше Select n form T order by R limit 1000 Может проще. Делаем три последовательности 1-1000 (3000 строк) Перемешиваем. Берем первые 1000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 04:02 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 06:08 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 07:05 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Alexander_Ttl, Код: plsql 1. я так понял фишка 12-й версии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 07:24 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
MaxiflyДва арифметических действия (ну ok - можно и одно) (причем деления. Причем с округлением) это реально эффективнее двух UNION ALL?Чудак, это всяко лучше, чем владеть мастерством быдло-копи-паста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 07:31 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
stells2, да, 12с. Сначала вариант с Код: sql 1. мне показался идеальным, но там действительно получается не случайные числа. Скажем, мы никогда не получим последовательность, не содержащую хотя бы одно число из 3-х идущих подряд, а это уже не случайные данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 07:46 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Alexander_Ttl, мой вариант, выше, даёт псевдослучайную (использование любых библиотечных генераторов не даёт истинно СЧ) последовательность 1000 элементов в деапазоне 1..1000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 08:56 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Alexander_Ttl, да, там есть "косячок", DBMS_RANDOM.value() генерит 0..1, и, может быть ситуация что trunc(DBMS_RANDOM.value()*1E3) = 0, что выпадает из условия 1..1Е3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 09:11 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: plsql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 09:18 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
stells2DBMS_RANDOM.value() генерит 0..1 у этой ф-ции есть параметры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 09:20 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
stells2, ты условия внимательно читал? Это должны быть случайные числа, но любое число из диапазона может повторяться не более 3 раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 09:27 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Alexander_TtlЭто должны быть случайные числа, но любое число из диапазона может повторяться не более 3 раз. Так оно и есть "случайное" и не повторяется более 3х раз, в чем не так? 123ййу этой ф-ции есть параметры Зачем они тут? Если произведение [0..1] х 1Е3 = 0..1E3 , что вполне совпадает с условием "из диапазона 1..1000". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 09:39 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
stells2Зачем они тут? Если произведение [0..1] х 1Е3 = 0..1E3 , что вполне НЕ совпадает с условием "из диапазона 1..1000". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 09:42 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Alexander_Ttlно любое число из диапазона может повторяться не более 3 раз.У него круче, все числа, кроме 1 и 1000 повторяются ровно один раз. Правда "случайность" зависит от строчки плана hash group by. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 09:49 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
-2- "случайность" зависит от строчки плана hash group by. Не совсем так, группировка тут на случайность никак не влияет, она вычленяет из уже полученных СЧ дубли. 123йй, вполне подходит, найдите вероятность выпадения 0. А подменить 0 на любое другое число, включая и рандомное не сложно. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 09:59 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
stells2 найдите вероятность выпадения 0. или выпадет или нет :) stells2А подменить 0 на любое другое число, включая и рандомное не сложно. :) зачем что-то подменять если можно сразу получить без него ? и еще раз посмотри что хотел ТС 21508502 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 10:06 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
123ййили выпадет или нет :) сколько раз? 123ййзачем что-то подменять если можно сразу получить без него ? и еще раз посмотри что хотел ТС 21508502 Получить 1000 случайных чисел от 1 до 1000, которые бы не повторялись более 3х раз. Код: plsql 1. Покажи в чем результат не удовлетворяет условию? Предложи свой вариант с DBMS_RANDOM.value(1,1000) что бы выполнялись все условия. Я свой предложил, это вариант, их может быть много и уже дали другие. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 10:26 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
stells2-2- "случайность" зависит от строчки плана hash group by. Не совсем так, группировка тут на случайность никак не влияет, она вычленяет из уже полученных СЧ дубли.Ну да. Сначала создал дубли, потом удалил... в итоге имеешь одну и ту же последовательность 1,1,2,3,...,999 (возможно с дырками, то есть меньшим, чем 1000 штук количеством). Порядок последовательности определяется способом группировки (no_)use_hash_aggregation. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 10:30 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
-2-Ну да. Сначала создал дубли, потом удалил... в итоге имеешь одну и ту же последовательность 1,1,2,3,...,999 (возможно с дырками, то есть меньшим, чем 1000 штук количеством). Порядок последовательности определяется способом группировки (no_)use_hash_aggregation. Может таки стоит выполнить запрос? ровно 1000 элементов, со случайным набором от 1 до 1000. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Чем эта выборка не удовлетворяет условию и чем она отличается от предложенных вариантов раннее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 11:00 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
stells2Чем эта выборка не удовлетворяет условию и чем она отличается от предложенных вариантов раннее?Тем, что с вероятностью 4.4% вернет меньшее количество, чем 1000 элементов. Элементы не до 3х раз, а каждый один раз. В зависимости от выбора оптимизатора может вернуть упорядоченный набор. И при этом используются лишние 9000+1 обращений к dbms_random против лишних 2000 предлагаемых тут несколько раз разными авторами. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 11:10 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
stells2Может таки стоит выполнить запрос? выполнил. Код: plsql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 11:11 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
stells2Может таки стоит выполнить запрос? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 11:16 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Сегласен. тогда Код: plsql 1. как тут вроде уже предлагали :) просто перемешали 1..1000 в случайном порядке, нет повторов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 11:59 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
stells2как тут вроде уже предлагали :) просто перемешали 1..1000 в случайном порядке, нет повторов. могу сказать больше. Первым же ответом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 12:04 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
123йй, не, ну процесс же интересен :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 12:18 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Вариант на T-SQL. Подскажите, насколько он оптимален? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 14:29 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
evkbrT-SQL. ПодскажитеФорумом ошибся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 14:33 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
ElicMaxiflyДва арифметических действия (ну ok - можно и одно) (причем деления. Причем с округлением) это реально эффективнее двух UNION ALL?Чудак, это всяко лучше, чем владеть мастерством быдло-копи-паста. Чувачок, разговор шел об эффективности кода а не о мастерстве решить задачу нажимая меньше кнопок на клаве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 14:58 |
|
||
|
Вывести 1000 случайных чисел
|
|||
|---|---|---|---|
|
#18+
Alexander_Ttlstells2, да, 12с. Сначала вариант с Код: sql 1. мне показался идеальным, но там действительно получается не случайные числа. Скажем, мы никогда не получим последовательность, не содержащую хотя бы одно число из 3-х идущих подряд, а это уже не случайные данные. Ну да. Но по условию задачи мы никогда не получим набор, в котором есть больше, чем 3 повторяющихся числа. Это тоже не случайные данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 15:28 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1883822]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
145ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 474ms |

| 0 / 0 |
