Main Content

randi

Enteros seudoaleatorios distribuidos de manera uniforme

Descripción

X = randi(imax) devuelve un entero escalar seudoaleatorio entre 1 y imax.

ejemplo

X = randi(imax,n) devuelve una matriz de n por n de enteros seudoaleatorios extraídos de la distribución uniforme discreta en el intervalo [1,imax].

X = randi(imax,sz1,...,szN) devuelve un arreglo de sz1 por ... por szN en el que sz1,...,szN indica el tamaño de cada dimensión. Por ejemplo, randi(10,3,4) devuelve un arreglo de 3 por 4 de enteros seudoaleatorios entre 1 y 10.

ejemplo

X = randi(imax,sz) devuelve un arreglo en el que el vector de tamaño sz define size(X). Por ejemplo, randi(10,[3 4]) devuelve un arreglo de 3 por 4 de enteros seudoaleatorios entre 1 y 10.

ejemplo

X = randi(___,typename) devuelve un arreglo de enteros seudoaleatorios entre 1 y imax del tipo de datos typename. La entrada typename puede ser "single", "double", "int8", "uint8", "int16", "uint16", "int32", "uint32" o "logical". Puede utilizar cualquiera de los argumentos de entrada de las sintaxis anteriores.

ejemplo

X = randi(___,"like",p) devuelve un arreglo de enteros seudoaleatorios como p, es decir, con el mismo tipo de datos y complejidad (real o complejo) que p. Puede especificar typename o "like", pero no ambos.

ejemplo

X = randi([imin,imax],___) devuelve un arreglo que contiene enteros seudoaleatorios extraídos de la distribución uniforme discreta en el intervalo [imin,imax], utilizando cualquiera de las sintaxis anteriores.

X = randi(s,___) genera enteros a partir de una secuencia de números aleatorios s en lugar de a partir de la secuencia global predeterminada. Para crear una secuencia, utilice RandStream. Puede especificar s seguido de cualquiera de las combinaciones de argumentos de entrada de las sintaxis anteriores.

Ejemplos

contraer todo

Genere una matriz de 5 por 5 de enteros aleatorios entre 1 y 10. La primera entrada a randi indica el entero más grande en el intervalo de muestreo (el entero más pequeño en el intervalo es 1).

r = randi(10,5)
r = 5×5

     9     1     2     2     7
    10     3    10     5     1
     2     6    10    10     9
    10    10     5     8    10
     7    10     9    10     7

Genere un vector columna de 10 por 1 de enteros aleatorios distribuidos uniformemente a partir del intervalo [-5,5].

r = randi([-5,5],10,1)
r = 10×1

     3
     4
    -4
     5
     1
    -4
    -2
     1
     5
     5

Guarde el estado actual del generador de números aleatorios y cree un vector de 1 por 5 de enteros aleatorios.

s = rng;
r = randi(10,1,5)
r = 1×5

     9    10     2    10     7

Restablezca el estado del generador de números aleatorios a s y, después, cree un vector nuevo de 1 por 5 de enteros aleatorios. Los valores son los mismos que antes.

rng(s);
r1 = randi(10,1,5)
r1 = 1×5

     9    10     2    10     7

Cree un arreglo de 3 por 2 por 3 de enteros aleatorios distribuidos de manera uniforme entre 1 y 500.

X = randi(500,[3,2,3])
X = 
X(:,:,1) =

   408   457
   453   317
    64    49


X(:,:,2) =

   140   483
   274    79
   479   486


X(:,:,3) =

   479    71
   243   211
   401   458

Cree un vector de 1 por 4 de números aleatorios entre 1 y 100 cuyos elementos sean de tipo int16.

r = randi(100,1,4,"int16")
r = 1x4 int16 row vector

   82   91   13   92

class(r)
ans = 
'int16'

Cree una matriz de enteros aleatorios distribuidos de manera uniforme entre 1 y 10 con el mismo tamaño que un arreglo existente.

A = [3 2; -2 1];
sz = size(A);
X = randi(10,sz)
X = 2×2

     9     2
    10    10

Es habitual combinar las dos líneas anteriores de código en una única línea:

X = randi(10,size(A));

Cree una matriz de enteros con signo de 8 bits de 2 por 2.

p = int8([3 2; -2 1]);

Cree un arreglo de enteros aleatorios que sea del mismo tamaño y tipo de datos que p.

X = randi(10,size(p),"like",p)
X = 2x2 int8 matrix

    9    2
   10   10

class(X)
ans = 
'int8'

Desde R2022a

Genere 10 enteros complejos aleatorios a partir de la distribución uniforme discreta en un dominio cuadrado con partes reales e imaginarias en el intervalo [-5,5].

a = randi([-5,5],10,1,"like",1i)
a = 10×1 complex

   3.0000 + 4.0000i
  -4.0000 + 5.0000i
   1.0000 - 4.0000i
  -2.0000 + 1.0000i
   5.0000 + 5.0000i
  -4.0000 + 5.0000i
   5.0000 + 0.0000i
   3.0000 - 4.0000i
  -1.0000 + 5.0000i
   3.0000 + 5.0000i

Desde R2023a

Cree una matriz de 5 por 5 de valores lógicos aleatorios (0 y 1) con una distribución uniforme discreta.

r = randi([0 1],5,"logical")
r = 5x5 logical array

   1   0   0   0   1
   1   0   1   0   0
   0   1   1   1   1
   1   1   0   1   1
   1   1   1   1   1

Argumentos de entrada

contraer todo

Valor entero más grande en intervalo de muestra, especificado como entero positivo. randi extrae valores de la distribución uniforme en el intervalo de muestra [1,imax].

Ejemplo: randi(10,5)

Valor entero más pequeño en intervalo de muestra, especificado como entero escalar.

Tanto imin como imax deben ser enteros que satisfagan iminimax.

Por ejemplo, randi([50,100],5) devuelve una matriz de 5 por 5 de enteros aleatorios entre 50 y 100 (incluidos estos).

Tamaño de la matriz cuadrada, especificado como valor entero.

  • Si n es 0, X es una matriz vacía.

  • Si n es negativo, se trata como 0.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Tamaño de cada dimensión, especificado como argumentos separados de valores enteros.

  • Si el tamaño de una dimensión cualquiera es 0, X es un arreglo vacío.

  • Si el tamaño de una dimensión cualquiera es negativo, se trata como 0.

  • Más allá de la segunda dimensión, randi ignora las dimensiones finales de tamaño 1. Por ejemplo, randi([5,10],3,1,1,1) produce un vector de 3 por 1 de enteros aleatorios entre 5 y 10.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Tamaño de cada dimensión, especificado como vector fila de valores enteros. Cada elemento de este vector indica el tamaño de la dimensión correspondiente:

  • Si el tamaño de una dimensión cualquiera es 0, X es un arreglo vacío.

  • Si el tamaño de una dimensión cualquiera es negativo, se trata como 0.

  • Más allá de la segunda dimensión, randi ignora las dimensiones finales de tamaño 1. Por ejemplo, randi([5,10],[3 1 1 1]) produce un vector de 3 por 1 de enteros aleatorios entre 5 y 10.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Tipo de datos (clase) que se desea crear, especificado como "double", "single", "int8", "uint8", "int16", "uint16", "int32", "uint32", "logical", o el nombre de otra clase que sea compatible con randi.

Ejemplo: randi(5,5,"int8")

Prototipo del arreglo que se desea crear, especificado como arreglo numérico o lógico.

Ejemplo: randi(5,5,"like",p)

Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical
Soporte de números complejos:

Secuencia de números aleatorios, especificada como objeto RandStream.

Ejemplo: s = RandStream("dsfmt19937"); randi(s,[5,10],[3 1])

Sugerencias

  • La secuencia de números que produce randi viene determinada por los ajustes internos del generador de números pseudoaleatorios uniforme que subyace a rand, randi y randn. Puede controlar ese generador de números aleatorios compartido utilizando rng.

  • Los arreglos devueltos por randi pueden contener valores enteros repetidos. En ocasiones, este comportamiento se conoce como muestreo con sustitución. Utilice randperm si necesita que todos los valores sean únicos.

  • Si imin y imax se encuentran fuera del intervalo del tipo de salida (según la especificación de typename o del prototipo p), randi crea en primer lugar números enteros aleatorios en el intervalo [imin,imax] y convierte los números enteros resultantes fuera del intervalo en el valor mínimo o máximo del tipo de salida. Por ejemplo:

    rng default;
    r = randi([-10 10],1,10)
    r =
    
         7     9    -8     9     3    -8    -5     1    10    10
    rng default;
    r = randi([-10 10],1,10,"logical")
    r =
    
      1×10 logical array
    
       1   1   0   1   1   0   0   1   1   1

Capacidades ampliadas

Historial de versiones

Introducido en R2008b

expandir todo