41 votes

Générer un nombre aléatoire dans une certaine plage dans MATLAB

Comment puis-je générer un nombre aléatoire dans MATLAB entre 13 et 20 ?

0 votes

0 votes

Cela nécessite plus d'informations : ..... Voulez-vous qu'elles soient continues entre [13, 20] ? L'intervalle est-il [13, 20] ou (13, 20), etc. Doivent-ils avoir la même probabilité ? Avez-vous une distribution en tête ?

57voto

zellus Points 7713

Si vous cherchez des entiers pseudo-aléatoires uniformément distribués, utilisez :

randi([13, 20])

0 votes

Est-ce que n = 13 + (rand(1) * 7) donne des entiers pseudo-aléatoires uniformément distribués ?

2 votes

@user581544 : non, sauf si vous appelez round(n).

3 votes

@crowso Pas du tout en fait. Les valeurs 13 et 20 auront la moitié de la probabilité des autres. Utilisez ceci pour voir ce que je veux dire : hist(round(13 + (rand(1, 10000) * 7)), 8) .

9voto

Chimoo Points 2141

6voto

pcofre Points 2235
r = 13 + 7.*rand(100,1);

Où 100,1 est la taille du vecteur considéré.

0voto

moksef Points 20

Vous pouvez également utiliser :

round(mod(rand.*max,max-1))+min

1 votes

N'est pas dans l'intervalle [min, max] et n'est pas non plus uniformément distribué, ce qui est implicitement impliqué par la question.

0 votes

Le module est en général difficile à prévoir et difficile à utiliser pour la génération de nombres aléatoires. En général, il est facile de se retrouver dans un modèle non aléatoire. Il est préférable d'utiliser rand

0 votes

@knedlsepp : Pour des raisons de généralité, je mentionne min pour 13, et max pour 20 (c'est implicite ! peut-être est-il préférable d'éditer la question à min et max). Pourriez-vous indiquer quelle est la distribution de probabilité du résultat ?

0voto

user2565199 Points 1

Si vous avez besoin d'un nombre aléatoire flottant entre 13 et 20

(20-13).*rand(1) + 13

Si vous avez besoin d'un nombre entier aléatoire compris entre 13 et 20

floor((21-13).*rand(1) + 13)

Note : Corriger le problème mentionné dans le commentaire "Ceci exclut 20" en remplaçant 20 par 21.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X