В этом учебном пособии вы узнаете, как использовать PostgreSQL функцию setseed с синтаксисом и примерами.
Описание
Функция setseed PostgreSQL может использоваться для установки начального числа при следующем вызове функции random. Если вы не вызываете setseed, PostgreSQL будет использовать свое собственное значение seed. Это может или не может быть действительно random.
Если вы установили начальное значение, вызвав функцию setseed, тогда функция random вернет повторяемую последовательность случайных чисел, полученную из начального числа.
Подсказка: Функция setseed может быть очень полезна в ситуациях, когда вы хотите убедиться, что PostgreSQL использует действительно случайное начальное число.
Синтаксис
Синтаксис функции setseed в PostgreSQL:
Параметры или аргументы
- seed
- Значение от 1,0 до -1,0 включительно, которое используется для предоставления начального значения для следующего вызова функции random
Примечание
- Функция setseed не возвращает значение. Это просто функция, используемая для подставления функции random.
- Смотрите также функцию random.
Применение
Функция setseed может использоваться в следующих версиях PostgreSQL:
- PostgreSQL 11, PostgreSQL 10, PostgreSQL 9.6, PostgreSQL 9.5, PostgreSQL 9.4, PostgreSQL 9.3, PostgreSQL 9.2, PostgreSQL 9.1, PostgreSQL 9.0, PostgreSQL 8.4
Пример
Рассмотрим, как использовать функцию setseed в PostgreSQL для заполнения функции random.
Вызов random функции без setseed
Если вы не вызываете функцию setseed до random функции, PostgreSQL предоставит собственное начальное число. Это значение не будет вам известно.
Например:
1 2 3 4 5 6 7 8 9 10 11 |
SELECT random(); --Результат: 0.987732674460858 SELECT random(); --Результат: 0.86434376006946 SELECT random(); --Результат: 0.26757511915639 |
Каждый раз, когда вы выполняете функцию random, вы получаете новое случайное число. Возвращенные вами случайные числа будут отличаться от приведенного выше примера, потому что ваши setseed будут отличаться от выполнения setseed в этом примере.
Вызов random функции с setseed
Теперь давайте посмотрим, что происходит, когда мы используем функцию setseed перед вызовом random функции.
Например давайте установим начальное значение на 0,5, а затем вызовем функцию random 3 раза:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
SELECT setseed(0.5); SELECT random(); --Результат: 0.550025727134198 SELECT random(); --Результат: 0.550025727134198 SELECT random(); --Результат: 0.607926093041897 |
В этом примере мы вызываем setseed один раз, а затем 3 раза функцию random. Делая это, мы получаем предсказуемые случайные числа. С setseed 0,5 вы всегда получите 0.550025727134198 в качестве первого случайного числа, 0.550025727134198 в качестве второго случайного числа и 0.607926093041897 в качестве третьего случайного числа
Изменение setseed между вызовами функции random
Иногда желательно, чтобы никогда не было предсказуемых результатов. Это может быть достигнуто путем вызова setseed с различными значениями между вызовами функции random.
Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
SELECT setseed(0.5); SELECT random(); --Результат: 0.65494442358613 SELECT setseed(0.38); SELECT random(); --Результат: 0.0662098047323525 SELECT setseed(-0.21); SELECT random(); --Результат: 0.226294529158622 |
При вызове setseed между вызовами функции random, случайные числа не будут предсказуемыми.