| Problème avec la commande rnd(). | |
|
|
Auteur | Message |
---|
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Problème avec la commande rnd(). Jeu 17 Oct 2013 - 18:43 | |
| Bonjour. J'ai un problème avec cette commande, qui retourne toujours la même valeur !! Merci de votre aide. L'objet 572 étant une combobox. - Code:
-
n%=count(572)-1 yy%=int(rnd(n%)) | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 17 Oct 2013 - 18:59 | |
| J' remplacé "count(572)-1" par 10000 car je ne sais à quoi correspond le count(572): j' avais pas fait attention, l' objet 572 est un combo... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec la commande rnd(). Jeu 17 Oct 2013 - 19:07 | |
| Si la combo 572 ne contient que peu d'éléments, le INT dans - Code:
-
yy%=int(rnd(n%)) annihile l'effet du RND. En effet, la valeur retournée par RND est un flottant, et retourner 2.007, 2.139 ou 2.426 produira toujours 2 via INT ! | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Problème avec la commande rnd(). Jeu 17 Oct 2013 - 19:09 | |
| Salut pan59
Tu n’as pas dit qu’elle est la valeur retournée. S’agit-elle de zéro ? Si oui, c’est probablement que ton combo ne contient que 2 éléments. Alors n% serait égale à 1, RND(1) donne un nombre INFERIEUR à 1 et avec INT(..) le résultat doit être zéro.
Edit : Klaus, on s'est croisé | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 17 Oct 2013 - 19:18 | |
| je ne comprends pas ton "-1" après count(572) si le tirage est 0 tu vas te retrouver avec un index à -1 chose qui va te provoquer une erreur. +1 aurait été mieux | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Problème avec la commande rnd(). Jeu 17 Oct 2013 - 19:24 | |
| mieux vaut écrire - Code:
-
yy%=int(rnd(1)*n%)+1 | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 17 Oct 2013 - 19:26 | |
| - Code:
-
dim x%,c%,n%,yy%
Combo 1 :font_name 1,"Arial" Memo 2 :font_name 2,"Arial" :top 2,40:height 2,300:bar_vertical 2 for x%=1 to 255 c% =c%+1 item_add 1,"chr$("+str$(c%)+") = "+chr$(c%) next x%
for x%=1 to 10 n%=count(1) yy%=int(rnd(n%))+1 if yy%>count(1) :yy%=count(1):end_if item_add 2,item_read$(1,yy%) next x% si tu fais -1 après count(572) en cas d' un tirage à 0 si tu te retrouvera avec une erreur si tu cherches à récupérer l' item de l'index car le plus petit item_index est 1. par contre en faisant +1 tu risque de dépasser le count(572) donc je mets la condition et si elle est vrai je prends la valeur de count(572) | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Problème avec la commande rnd(). Jeu 17 Oct 2013 - 19:36 | |
| Voici une SUB pour avoir un entier aléatoire entres les bornes mini et maxi (bornes comprises) - Code:
-
dim rand rand(10,25) : message rand
end rem =========================================================================== ' Fournir un entier aléatoire entre mini et maxi bornes comprises SUB Rand(mini,maxi) rand = int(rnd(maxi-mini+1))+mini END_SUB rem =========================================================================== | |
|
| |
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Problème avec la commande rnd(). Jeu 17 Oct 2013 - 21:39 | |
| Bonsoir.
Merci à tous de votre aide.
Tout fonctionne correctement maintenant. | |
|
| |
Contenu sponsorisé
| Sujet: Re: Problème avec la commande rnd(). | |
| |
|
| |
| Problème avec la commande rnd(). | |
|