Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

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].

ejemplo

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" o "uint32". Puede utilizar cualquiera de los argumentos de entrada en 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.

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'

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

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 crear, especificado como "double", "single", "int8", "uint8", "int16", "uint16", "int32", "uint32", o nombre de otra clase que sea compatible con randi.

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

Prototipo del arreglo que crear, especificado como arreglo numérico.

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

Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32
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.

Capacidades ampliadas

Historial de versiones

Introducido en R2008b

expandir todo