Ya no necesitas indagar más por todo internet ya que has llegado al sitio indicado, tenemos la solución que quieres sin complicaciones.
los Generator
proporciona acceso a una amplia gama de distribuciones y sirvió como reemplazo de RandomState
. La principal diferencia entre los dos es que Generator
se basa en un BitGenerator adicional para administrar el estado y generar los bits aleatorios, que luego se transforman en valores aleatorios a partir de distribuciones útiles. El BitGenerator predeterminado utilizado por Generator
es PCG64
. El BitGenerator se puede cambiar pasando un BitGenerator instanciado a Generator
.
numpy.random.default_rng()
-
Construya un nuevo generador con el BitGenerator predeterminado (PCG64).
- Parámetros
-
seedNone, int, array_like[ints], SeedSequence, BitGenerator, Generator, optional
-
Una semilla para inicializar el
BitGenerator
. Si es Ninguno, se extraerá del sistema operativo una nueva e impredecible entropía. Si unaint
oarray_like[ints]
se pasa, luego se pasará aSeedSequence
para derivar la inicialBitGenerator
estado. También se puede pasar en unSeedSequence
ejemplo. Además, cuando pasa unBitGenerator
, será envuelto porGenerator
. Si pasa unGenerator
, será devuelto inalterado.
- Devoluciones
-
- Generador
-
El objeto generador inicializado.
Notas
Si
seed
no es unBitGenerator
o unGenerator
, un nuevoBitGenerator
se instancia. Esta función no administra una instancia global predeterminada.Ejemplos de
default_rng
es el constructor recomendado para la clase de número aleatorioGenerator
. Aquí hay varias formas en que podemos construir un generador de números aleatorios usandodefault_rng
y elGenerator
clase.Aquí usamos
default_rng
para generar un flotador aleatorio:>>>import numpy as np >>> rng = np.random.default_rng(12345)>>>print(rng) Generator(PCG64)>>> rfloat = rng.random()>>> rfloat 0.22733602246716966>>>type(rfloat)<class'float'>
Aquí usamos
default_rng
para generar 3 enteros aleatorios entre 0 (inclusive) y 10 (exclusivo):>>>import numpy as np >>> rng = np.random.default_rng(12345)>>> rints = rng.integers(low=0, high=10, size=3)>>> rints array([6,2,7])>>>type(rints[0])<class'numpy.int64'>
Aquí especificamos una semilla para que tengamos resultados reproducibles:
>>>import numpy as np >>> rng = np.random.default_rng(seed=42)>>>print(rng) Generator(PCG64)>>> arr1 = rng.random((3,3))>>> arr1 array([[0.77395605,0.43887844,0.85859792],[0.69736803,0.09417735,0.97562235],[0.7611397,0.78606431,0.12811363]])
Si salimos y reiniciamos nuestro intérprete de Python, veremos que generamos los mismos números aleatorios nuevamente:
>>>import numpy as np >>> rng = np.random.default_rng(seed=42)>>> arr2 = rng.random((3,3))>>> arr2 array([[0.77395605,0.43887844,0.85859792],[0.69736803,0.09417735,0.97562235],[0.7611397,0.78606431,0.12811363]])
class numpy.random.Generator(bit_generator)
-
Contenedor para los BitGenerators.
Generator
expone una serie de métodos para generar números aleatorios extraídos de una variedad de distribuciones de probabilidad. Además de los argumentos específicos de la distribución, cada método toma un argumento de palabra clavesize
que por defecto esNone
. Sisize
esNone
, luego se genera y se devuelve un único valor. Sisize
es un número entero, luego se devuelve una matriz 1-D llena de valores generados. Sisize
es una tupla, luego se llena y se devuelve una matriz con esa forma.La función
numpy.random.default_rng
creará una instanciaGenerator
con numpy predeterminadoBitGenerator
.Sin garantía de compatibilidad
Generator
no ofrece una garantía de compatibilidad de versiones. En particular, a medida que evolucionan mejores algoritmos, el flujo de bits puede cambiar.- Parámetros
-
bit_generatorBitGenerator
-
BitGenerator para usar como generador central.
Ver también
default_rng
-
Constructor recomendado para
Generator
.
Notas
El módulo stdlib de Python
random
contiene un generador de números pseudoaleatorios con una serie de métodos que son similares a los disponibles enGenerator
. Utiliza Mersenne Twister, y se puede acceder a este generador de bits utilizandoMT19937
.Generator
, además de ser consciente de NumPy, tiene la ventaja de que proporciona un número mucho mayor de distribuciones de probabilidad para elegir.Ejemplos de
>>>from numpy.random import Generator, PCG64 >>> rg = Generator(PCG64())>>> rg.standard_normal()-0.203# random
Accediendo al BitGenerator
|
Obtiene la instancia del generador de bits que usa el generador. |
Datos aleatorios simples
|
Devuelve enteros aleatorios de |
|
Devuelve flotadores aleatorios en el intervalo semiabierto [0.0, 1.0). |
|
Genera una muestra aleatoria de una matriz 1-D dada |
|
Devuelve bytes aleatorios. |
Permutaciones
Los métodos para permutar aleatoriamente una secuencia son
|
Modifique una matriz o secuencia en el lugar mezclando su contenido. |
|
Permutar aleatoriamente una secuencia o devolver un rango permutado. |
|
Permutar aleatoriamente |
La siguiente tabla resume los comportamientos de los métodos.
método |
copiar / en el lugar |
manejo de ejes |
---|---|---|
barajar |
en su lugar |
como si 1d |
permutación |
Copiar |
como si 1d |
permutado |
ya sea (use ‘out’ para in situ) |
independiente del eje |
Las siguientes subsecciones proporcionan más detalles sobre las diferencias.
En el lugar frente a copia
La principal diferencia entre Generator.shuffle
y Generator.permutation
es eso Generator.shuffle
opera en el lugar, mientras Generator.permutation
devuelve una copia.
Por defecto, Generator.permuted
devuelve una copia. Para operar en el lugar con Generator.permuted
, pasa la misma matriz que el primer argumento y como el valor de la out
parámetro. Por ejemplo,
>>> rg = np.random.default_rng()>>> x = np.arange(0,15).reshape(3,5)>>> x array([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]])>>> y = rg.permuted(x, axis=1, out=x)>>> x array([[1,0,2,4,3],# random[6,7,8,9,5],[10,14,11,13,12]])
Tenga en cuenta que cuando out
se da, el valor de retorno es out
:
>>> y is x True
Manejando el axis
parámetro
Una distinción importante para estos métodos es cómo manejan el axis
parámetro. Ambos Generator.shuffle
y Generator.permutation
tratar la entrada como una secuencia unidimensional, y la axis
El parámetro determina qué dimensión de la matriz de entrada se utilizará como secuencia. En el caso de una matriz bidimensional, axis=0
reorganizará, en efecto, las filas de la matriz, y axis=1
reorganizará las columnas. Por ejemplo
>>> rg = np.random.default_rng()>>> x = np.arange(0,15).reshape(3,5)>>> x array([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]])>>> rg.permutation(x, axis=1) array([[1,3,2,0,4],# random[6,8,7,5,9],[11,13,12,10,14]])
Tenga en cuenta que las columnas se han reorganizado “a granel”: los valores dentro de cada columna no han cambiado.
El método Generator.permuted
trata el axis
parámetro similar a cómo numpy.sort
lo trata. Cada corte a lo largo del eje dado se baraja independientemente de los demás. Compare el siguiente ejemplo del uso de Generator.permuted
al ejemplo anterior de Generator.permutation
:
>>> rg.permuted(x, axis=1) array([[1,0,2,4,3],# random[5,7,6,9,8],[10,14,12,13,11]])
En este ejemplo, los valores dentro de cada fila (es decir, los valores a lo largo axis=1
) se han barajado de forma independiente. Esta no es una mezcla “masiva” de las columnas.
Mezcla aleatoria de secuencias que no son NumPy
Generator.shuffle
funciona en secuencias que no son NumPy. Es decir, si se le da una secuencia que no es una matriz NumPy, baraja esa secuencia en el lugar. Por ejemplo,
>>> rg = np.random.default_rng()>>> a =['A','B','C','D','E']>>> rg.shuffle(a)# shuffle the list in-place>>> a ['B','D','A','E','C']# random
Distribuciones
|
Extrae muestras de una distribución Beta. |
|
Extrae muestras de una distribución binomial. |
|
Extrae muestras de una distribución de chi-cuadrado. |
|
Extrae muestras de la distribución de Dirichlet. |
|
Extrae muestras de una distribución exponencial. |
|
Extrae muestras de una distribución F. |
|
Extrae muestras de una distribución gamma. |
|
Extrae muestras de la distribución geométrica. |
|
Extrae muestras de una distribución de Gumbel. |
|
Extrae muestras de una distribución hipergeométrica. |
|
Extraiga muestras de la distribución de Laplace o exponencial doble con una ubicación (o media) y una escala (decaimiento) especificadas. |
|
Extraiga muestras de una distribución logística. |
|
Extraiga muestras de una distribución logarítmica normal. |
|
Extrae muestras de una distribución en serie logarítmica. |
|
Extrae muestras de una distribución multinomial. |
|
Genere variables a partir de una distribución hipergeométrica multivariante. |
|
Extraiga muestras aleatorias de una distribución normal multivariante. |
|
Extrae muestras de una distribución binomial negativa. |
|
Extraiga muestras de una distribución chi-cuadrado no central. |
|
Extraiga muestras de la distribución F no central. |
|
Extraiga muestras aleatorias de una distribución normal (gaussiana). |
|
Dibuje muestras de una distribución de Pareto II o Lomax con una forma especificada. |
|
Extrae muestras de una distribución de Poisson. |
|
Dibuja muestras en [0, 1] a partir de una distribución de potencia con exponente positivo a – 1. |
|
Extraiga muestras de una distribución de Rayleigh. |
|
Extraiga muestras de una distribución de Cauchy estándar con moda = 0. |
|
Extrae muestras de la distribución exponencial estándar. |
|
Extrae muestras de una distribución gamma estándar. |
|
Extraiga muestras de una distribución normal estándar (media = 0, stdev = 1). |
|
Extraiga muestras de una distribución t de Student estándar con |
|
Dibujar muestras de la distribución triangular a lo largo del intervalo. |
|
Extrae muestras de una distribución uniforme. |
|
Extrae muestras de una distribución de von Mises. |
|
Extraiga muestras de una distribución de Wald o gaussiana inversa. |
|
Extrae muestras de una distribución de Weibull. |
|
Extrae muestras de una distribución Zipf. |
Al final de todo puedes encontrar las acotaciones de otros sys admins, tú además tienes la libertad de insertar el tuyo si dominas el tema.