Main Content

randi

Numeri interi pseudocasuali uniformemente distribuiti

Descrizione

X = randi(imax) restituisce un numero intero scalare pseudocasuale compreso tra 1 e imax.

esempio

X = randi(imax,n) restituisce una matrice n x n di numeri interi pseudocasuali estratti dalla distribuzione uniforme discreta sull'intervallo [1,imax].

X = randi(imax,sz1,...,szN) restituisce un array sz1 x...x szN dove sz1,...,szN indica la grandezza di ciascuna dimensione. Ad esempio, randi(10,3,4) restituisce una matrice 3x4 di numeri interi pseudocasuali compresi tra 1 e 10.

esempio

X = randi(imax,sz) restituisce un array dove il vettore di grandezza sz definisce size(X). Ad esempio, randi(10,[3 4]) restituisce una matrice 3x4 di numeri interi pseudocasuali compresi tra 1 e 10.

esempio

X = randi(___,typename) restituisce un array di numeri interi pseudocasuali compresi tra 1 e imax del tipo di dati typename. L'input typename può essere "single", "double", "int8", "uint8", "int16", "uint16", "int32", "uint32" o "logical". È possibile utilizzare uno qualsiasi degli argomenti di input nelle sintassi precedenti.

esempio

X = randi(___,"like",p) restituisce un array di numeri pseudocasuali come p; ossia, con lo stesso tipo di dati e con la stessa complessità (reale o complessa) di p. È possibile specificare typename o "like", ma non entrambi.

esempio

X = randi([imin,imax],___) restituisce un array contenente numeri interi estratti dalla distribuzione uniforme discreta sull'intervallol [imin,imax], utilizzando una qualsiasi delle sintassi sopra indicate.

X = randi(s,___) genera numeri interi dal flusso di numeri casuali s anziché dal flusso globale predefinito. Per creare un flusso, utilizzare RandStream. È possibile specificare s seguito da una qualsiasi combinazione di argomenti di input nelle sintassi precedenti.

Esempi

comprimi tutto

Generare una matrice 5x5 di numeri interi casuali compresi tra 1 e 10. Il primo input a randi indica il numero intero più grande nell'intervallo di campionamento (il numero intero più piccolo nell'intervallo è 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

Generare un vettore colonna 10x1 di numeri interi casuali uniformemente distribuiti dall'intervallo di campionamento [-5,5].

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

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

Salvare lo stato attuale del generatore di numeri casuali e creare un vettore 1x5 di numeri interi casuali.

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

     9    10     2    10     7

Ripristinare lo stato del generatore di numeri casuali su s, quindi creare un nuovo vettore 1x5 di numeri interi casuali. I valori sono uguali a quelli precedenti.

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

     9    10     2    10     7

Creare un array 3x2x3 di numeri interi casuali distribuiti uniformemente tra 1 e 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

Creare un vettore 1 per 4 di numeri casuali compresi tra 1 e 100 i cui elementi sono di tipo int16.

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

   82   91   13   92

class(r)
ans = 
'int16'

Creare una matrice di numeri interi casuali uniformemente distribuiti tra 1 e 10 con la stessa grandezza di un array esistente.

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

     9     2
    10    10

È prassi comune combinare le due righe di codice precedenti in un'unica riga:

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

Creare una matrice 2x2 di numeri interi con segno a 8 bit.

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

Creare un array di numeri interi casuali della stessa grandezza e dello stesso tipo di dati di p.

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

    9    2
   10   10

class(X)
ans = 
'int8'

Da R2022a

Generare 10 numeri interi complessi casuali dalla distribuzione uniforme discreta su un dominio quadrato con parti reali e immaginarie comprese nell'intervallo [-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

Da R2023a

Creare una matrice 5x5 di valori logici casuali (0 e 1) con una distribuzione 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

Argomenti di input

comprimi tutto

Numero intero più grande nell'intervallo di campionamento, specificato come intero positivo. randi estrae i valori dalla distribuzione uniforme nell'intervallo di campionamento [1,imax].

Esempio randi(10,5)

Numero intero più piccolo nell'intervallo di campionamento, specificato come intero scalare.

Sia imin che imax devono essere numeri interi che soddisfano la condizione iminimax.

Ad esempio, randi([50,100],5) restituisce una matrice 5x5 di numeri interi casuali compresi tra 50 e 100 (inclusi).

Dimensione della matrice quadrata, specificata come valore intero.

  • Se n è 0, X è una matrice vuota.

  • Se n è negativo, viene trattato come 0.

Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Grandezza di ciascuna dimensione, specificata come argomenti separati di valori interi.

  • Se la grandezza di qualsiasi dimensione è 0, X è un array vuoto.

  • Se la grandezza di qualsiasi dimensione è negativa, viene trattata come 0.

  • Oltre la seconda dimensione, randi ignora le dimensioni finali con grandezza pari a 1. Ad esempio, randi([5,10],3,1,1,1) produce un vettore 3x1 di numeri interi casuali compresi tra 5 e 10.

Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Grandezza di ciascuna dimensione, specificata come vettore riga di valori interi. Ciascun elemento di questo vettore indica la grandezza della dimensione corrispondente:

  • Se la grandezza di qualsiasi dimensione è 0, X è un array vuoto.

  • Se la grandezza di qualsiasi dimensione è negativa, viene trattata come 0.

  • Oltre la seconda dimensione, randi ignora le dimensioni finali con grandezza pari a 1. Ad esempio, randi([5,10],[3 1 1 1]) produce un vettore 3x1 di numeri interi casuali compresi tra 5 e 10.

Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Tipo di dati (classe) da creare, specificato come "double", "single", "int8", "uint8", "int16", "uint16", "int32", "uint32", "logical" o il nome di un'altra classe che fornisce supporto randi.

Esempio randi(5,5,"int8")

Prototipo di array da creare, specificato come un array numerico o array logico.

Esempio randi(5,5,"like",p)

Tipi di dati: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical
Supporto numeri complessi:

Flusso di numeri casuali, specificato come oggetto RandStream.

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

Suggerimenti

  • La sequenza di numeri prodotta da randi è determinata dalle impostazioni interne del generatore di numeri pseudocasuali uniformi che è alla base di rand, randi e randn. È possibile controllare quel generatore di numeri casuali condiviso utilizzando rng.

  • Gli array restituiti da randi possono contenere valori interi ripetuti. Questo comportamento viene talvolta definito campionamento con sostituzione. Utilizzare randperm se si desidera ottenere tutti valori univoci.

  • Se imin e imax non rientrano nell'intervallo del tipo di output (come specificato da typename o dal prototipo p), randi crea prima i numeri interi casuali all'interno dell'intervallo [imin,imax] e poi converte qualsiasi numero intero fuori dall'intervallo nel valore minimo o massimo del tipo di output. Ad esempio:

    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

Funzionalità estese

Cronologia versioni

Introdotto in R2008b

espandi tutto