PostgreSQL: función setseed

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

PostgreSQL: función setseed

Este tutorial de PostgreSQL explica cómo usar PostgreSQL Establecer la función de torrent Con sintaxis y ejemplos.

describir

La función setseed de PostgreSQL se puede usar para establecer la semilla para su próxima llamada a la función aleatoria. Si no llama a setseed, PostgreSQL usará su propio valor inicial. Esto puede o no ser verdaderamente aleatorio.

Si la semilla se establece llamando a la función setseed, la función aleatoria devuelve una secuencia de números aleatorios repetibles derivados de la semilla.

propina: La función setseed es útil en situaciones en las que desea asegurarse de que PostgreSQL use una semilla verdaderamente aleatoria.

sintaxis

La sintaxis de la función setseed en PostgreSQL es:

setseed( seed )

parámetro o parámetro

semilla Un valor entre 1,0 y -1,0 (inclusive) que se utiliza para generar la siguiente llamada a la función aleatoria.

notas

  • La función setseed no devuelve un valor. Es solo una función para sembrar funciones aleatorias.
  • Véase también función aleatoria.

aplicar para

La función setseed está disponible en las siguientes versiones de PostgreSQL:

  • PostgreSQL 9.4, PostgreSQL 9.3, PostgreSQL 9.2, PostgreSQL 9.1, PostgreSQL 9.0, PostgreSQL 8.4

ejemplo

Exploremos cómo usar la función setseed en PostgreSQL para generar la función aleatoria.

llamar a función aleatoria sin semilla

Si no llama a la función setseed antes que a la función aleatoria, PostgreSQL proporcionará su propia semilla. No sabrás el valor.

Por ejemplo:

postgres=# SELECT random();
      random
-------------------
 0.623784058727324
(1 row)

postgres=# SELECT random();
      random       
-------------------
 0.828258865978569
(1 row)

postgres=# SELECT random();
random       
-------------------
 0.269835902377963
(1 row)

Cada vez que ejecuta la función aleatoria, obtiene un nuevo número aleatorio. El número aleatorio que devuelva será diferente de nuestro ejemplo anterior porque su semilla es diferente de la nuestra.

llamar a función aleatoria con semilla

Ahora, veamos qué sucede cuando usamos la función setseed antes de llamar a la función aleatoria.

Por ejemplo, establezcamos la semilla en 0.5 y llamemos a la función aleatoria 3 veces:

postgres=# SELECT setseed(0.5);
 setseed 
---------

(1 row)

postgres=# SELECT random();
      random
-------------------
 0.798512778244913
(1 row)

postgres=# SELECT random();
      random
-------------------
 0.518533017486334
(1 row)

postgres=# SELECT random();
      random
-------------------
 0.0734698106534779
(1 row)

En este ejemplo, llamamos a setseed una vez y luego llamamos a la función aleatoria 3 veces. Al hacer esto, obtenemos números aleatorios predecibles. Con una semilla de 0,5, siempre obtendrá 0,798512778244913 como primer número aleatorio, 0,518533017486334 como segundo número aleatorio y 0,0734698106534779 como tercer número aleatorio.

Cambiar la semilla entre llamadas a aleatorio

A veces se espera que nunca haya un resultado predecible. Esto se puede lograr llamando a setseed con diferentes valores entre llamadas a la función aleatoria.

Por ejemplo:

postgres=# SELECT setseed(0.5);
 setseed 
---------

(1 row)

postgres=# SELECT random();
      random
-------------------
 0.798512778244913
(1 row)

postgres=# SELECT setseed(0.38);
 setseed 
---------

(1 row)

postgres=# SELECT random();
      random
-------------------
 0.771267373114824
(1 row)

postgres=# SELECT setseed(-0.21);
 setseed 
---------

(1 row)

postgres=# SELECT random();
      random
-------------------
 0.590676144231111
(1 row)

Al llamar a setseed entre llamadas a la función aleatoria, el número aleatorio será impredecible.