Bonjour,
Je voulais générer des valeurs entre [0,1]. J'ai utilisé rand dont ses valeurs sont dans l'intervalle [0,1[
Comment peut-on inclure le 1 aléatoirement.
Merci.
Bonjour,
Je voulais générer des valeurs entre [0,1]. J'ai utilisé rand dont ses valeurs sont dans l'intervalle [0,1[
Comment peut-on inclure le 1 aléatoirement.
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part rand*(1+eps)
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
En fait ce que tu dis est vrai si tu stock la valeur dans une variable sans avoir préciser le type. Dans ce cas matlab fait un cast vers un short (type par défaut à l'initialisation) et il arrondi à la valeur sup : 0.99995=1
Si tu veux avoir une chance sur 10^7 tu déclare tes variable en long:
format('long').
En revanche si tu fais:
Dans ce cas tu ne sortiras pas de la boucle car tu te trouveras dans le cas continu. En continu c'est impossible de tomber sur une valeur exacte (si tu remplace 1 par 0.5 ou autre dans la boucle tu ne tombera jamais dessus).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 while rand()~=1 ; end
Non, le type par défaut est double. Pour t'en convaincre, utilises la fonction CLASS.
Les deux seuls types pouvant être retournés par la fonction RAND sont single et double:
Le code format('long') ne fixe pas le type des variables mais seulement la façon dont elles sont affichées.Envoyé par doc rand
Voir la Pourquoi MATLAB affiche-t-il des valeurs tronquées ?
Pour répondre à Christinita, une solution avec RANDI (Nb étant le nombre de valeurs différentes générées)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Nb = 1000; R = (randi(Nb)-1)/(Nb-1)
Dernière modification par Invité ; 22/01/2012 à 01h53.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager