Contenu principal

randi

Nombres entiers aléatoires uniformément distribués

Description

X = randi(imax) renvoie un nombre entier scalaire aléatoire compris entre 1 et imax.

X = randi(imax,n) renvoie une matrice n x n de nombres entiers aléatoires tirés de la distribution uniforme discrète sur l’intervalle [1,imax].

exemple

X = randi(imax,sz1,...,szN) renvoie un tableau de dimension sz1 x … x szN, où sz1,...,szN indique la taille de chaque dimension. Par exemple, randi(10,3,4) renvoie un tableau 3 x 4 de nombres entiers aléatoires compris entre 1 et 10.

X = randi(imax,sz) renvoie un tableau où le vecteur de taille sz définit size(X). Par exemple, randi(10,[3 4]) renvoie un tableau 3 x 4 de nombres entiers aléatoires compris entre 1 et 10.

exemple

X = randi(___,typename) renvoie un tableau de nombres entiers aléatoires compris entre 1 et imax dont le type de données est typename. L’entrée typename peut être "single", "double", "int8", "uint8", "int16", "uint16", "int32", "uint32" ou "logical". Vous pouvez utiliser n’importe quel argument en entrée dans les syntaxes précédentes.

exemple

X = randi(___,like=p) renvoie un tableau de nombres entiers aléatoires tels que p, c’est-à-dire du même type de données et de la même complexité (réelle ou complexe) que p. Vous pouvez spécifier typename ou like, mais pas les deux.

exemple

X = randi([imin,imax],___) renvoie un tableau contenant des nombres entiers tirés de la distribution uniforme discrète sur l’intervalle [imin,imax] avec l’une des syntaxes ci-dessus.

exemple

X = randi(s,___) génère des nombres entiers à partir d’une série de nombres aléatoires s au lieu de la série globale par défaut. Pour créer une série, utilisez RandStream. Vous pouvez spécifier s suivi de n’importe quelle combinaison d’arguments en entrée dans les syntaxes précédentes.

Exemples

réduire tout

Générez une matrice 5 x 5 de nombres entiers aléatoires compris entre 1 et 10. La première entrée de randi indique le nombre entier le plus grand dans l’intervalle d’échantillonnage (le nombre entier le plus petit dans l’intervalle est 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

Générez un vecteur colonne 10 x 1 de nombres entiers aléatoires uniformément distribués à partir de l’intervalle d’échantillonnage [-5,5].

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

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

Enregistrez l’état actuel du générateur de nombres aléatoires et créez un vecteur de nombres entiers aléatoires de dimension 1 x 5.

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

     9    10     2    10     7

Restaurez l’état du générateur de nombres aléatoires à s puis créez un nouveau vecteur de nombres entiers aléatoires de dimension 1 x 5. Les valeurs sont les mêmes qu’avant.

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

     9    10     2    10     7

Créez un tableau 3 x 2 x 3 de nombres entiers aléatoires uniformément distribués entre 1 et 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

Créez un vecteur 1 x 4 de nombres aléatoires compris entre 1 et 100 dont les éléments sont de type int16.

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

   82   91   13   92

class(r)
ans = 
'int16'

Créez une matrice de nombres entiers aléatoires uniformément distribués entre 1 et 10 de la même taille qu’un tableau existant.

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

     9     2
    10    10

Il est courant de combiner les deux lignes de code précédentes en une seule :

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

Créez une matrice 2 x 2 de nombres entiers signés de 8 bits.

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

Créez un tableau de nombres entiers aléatoires de la même taille et du même type de données que p.

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

    9    2
   10   10

class(X)
ans = 
'int8'

Depuis R2022a

Générez 10 nombres entiers complexes aléatoires à partir de la distribution uniforme discrète sur un domaine carré avec des parties réelles et imaginaires dans l’intervalle [-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

Depuis R2023a

Créez une matrice 5 x 5 de valeurs logiques (0 et 1) aléatoires avec une distribution uniforme discrète.

r = randi([0 1],5,"logical")
r = 5×5 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

Arguments d'entrée

réduire tout

Nombre entier le plus grand dans l’intervalle d’échantillonnage, spécifié sous forme d’un nombre entier positif. randi tire des valeurs de la distribution uniforme dans l’intervalle d’échantillonnage [1,imax].

Exemple : randi(10,5)

Nombre entier le plus petit dans l’intervalle d’échantillonnage, spécifié sous forme d’un nombre entier scalaire.

imin et imax doivent tous deux être des nombres entiers tels que imin ≤ imax.

Par exemple, randi([50,100],5) renvoie une matrice 5 x 5 de nombres entiers aléatoires compris entre 50 et 100 (inclus).

Taille de la matrice carrée, spécifiée sous forme d’une valeur entière.

  • Si n est égal à 0, alors X est une matrice vide.

  • Si n est négatif, il est traité comme 0.

Types de données : single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Taille de chaque dimension, spécifiée sous forme d’arguments distincts de valeurs entières.

  • Si la taille d’une dimension est égale à 0, alors X est un tableau vide.

  • Si la taille d’une dimension est négative, elle est traitée comme une taille égale à 0.

  • Au-delà de la deuxième dimension, randi ignore les dimensions suivantes de taille 1. Par exemple, randi([5,10],3,1,1,1) produit un vecteur 3 x 1 de nombres entiers aléatoires compris entre 5 et 10.

Types de données : single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Taille de chaque dimension, spécifiée sous forme d’un vecteur ligne de valeurs entières. Chaque élément de ce vecteur indique la taille de la dimension correspondante :

  • Si la taille d’une dimension est égale à 0, alors X est un tableau vide.

  • Si la taille d’une dimension est négative, elle est traitée comme une taille égale à 0.

  • Au-delà de la deuxième dimension, randi ignore les dimensions suivantes de taille 1. Par exemple, randi([5,10],[3 1 1 1]) produit un vecteur 3 x 1 de nombres entiers aléatoires compris entre 5 et 10.

Types de données : single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Type de données (classe) à créer, spécifié comme "double", "single", "int8", "uint8", "int16", "uint16", "int32", "uint32", "logical" ou le nom d’une autre classe supportant randi.

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

Prototype du tableau à créer, spécifié sous forme de tableau numérique ou logique.

Exemple : randi(5,5,like=p)

Types de données : single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical
Support des nombres complexes : Oui

Série de nombres aléatoires, spécifiée sous forme d’un objet RandStream.

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

Arguments de sortie

réduire tout

Tableau en sortie, renvoyé sous forme de scalaire, de vecteur, de matrice ou de tableau multidimensionnel.

En savoir plus

réduire tout

Conseils

  • La séquence de nombres produite par randi est déterminée par les paramètres internes du générateur de nombres pseudo-aléatoires uniforme qui sous-tend rand, randi et randn. Vous pouvez contrôler ce générateur de nombres aléatoires partagé à l’aide de rng.

  • Les tableaux renvoyés par randi peuvent contenir des valeurs entières répétées. Ce comportement est parfois appelé échantillonnage avec remplacement. Si vous souhaitez que toutes les valeurs soient uniques, utilisez randperm.

  • Si imin et imax sont en dehors de la plage du type de sortie (tel que spécifié par typename ou par le prototype p), randi crée d’abord des nombres entiers aléatoires dans l’intervalle [imin,imax] puis convertit les éventuels nombres entiers hors plage qui en résultent en la valeur minimale ou maximale du type de sortie. Par exemple :

    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

Capacités étendues

développer tout

Historique des versions

Introduit dans R2008b

développer tout