powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вывести 1000 случайных чисел
4 сообщений из 79, страница 4 из 4
Вывести 1000 случайных чисел
    #39663655
evkbr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вариант на T-SQL.
Подскажите, насколько он оптимален?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
DECLARE @counter int = 1;
DECLARE @nmb int;
DECLARE @rn int;


WHILE( @counter <= 1000)
  BEGIN

    SET @nmb = (SELECT CONVERT(int, RAND() * 1000));
    INSERT INTO rnd(num, cnter) VALUES(@nmb, @counter);

    SET @rn = (SELECT rn FROM(
        SELECT * ,
        ROW_NUMBER() over(PARTITION BY num ORDER BY cnter) rn FROM rnd) a WHERE cnter = @counter);
    IF(@rn <= 3)
      SET @counter += 1;
    ELSE
      DELETE FROM rnd
      WHERE cnter = @counter;

  END
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39663656
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evkbrT-SQL.
ПодскажитеФорумом ошибся.
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39663663
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicMaxiflyДва арифметических действия (ну ok - можно и одно) (причем деления. Причем с округлением) это реально эффективнее двух UNION ALL?Чудак, это всяко лучше, чем владеть мастерством быдло-копи-паста.
Чувачок, разговор шел об эффективности кода а не о мастерстве решить задачу нажимая меньше кнопок на клаве.
...
Рейтинг: 0 / 0
Вывести 1000 случайных чисел
    #39663672
Рогафип
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander_Ttlstells2, да, 12с.

Сначала вариант с
Код: sql
1.
mod(trunc(dbms_random.VALUE(level, level+3)), 1000) +1

мне показался идеальным, но там действительно получается не случайные числа. Скажем, мы никогда не получим последовательность, не содержащую хотя бы одно число из 3-х идущих подряд, а это уже не случайные данные.

Ну да. Но по условию задачи мы никогда не получим набор, в котором есть больше, чем 3 повторяющихся числа. Это тоже не случайные данные.
...
Рейтинг: 0 / 0
4 сообщений из 79, страница 4 из 4
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вывести 1000 случайных чисел
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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