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.
Version imprimable
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:rand*(1+eps)
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:
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.Citation:
Envoyé par doc rand
Voir la :faq: 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:
1
2 Nb = 1000; R = (randi(Nb)-1)/(Nb-1)