|
|
|
Вывести 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 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39511672&tid=1883822]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
3ms |
| others: | 250ms |
| total: | 548ms |

| 0 / 0 |
