Générer un nombre entier aléatoirement en VB
Fermé
Ean21
Messages postés
84
Date d'inscription
samedi 28 août 2004
Statut
Membre
Dernière intervention
7 février 2007
-
24 mars 2005 à 22:38
eriiic Messages postés 24602 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 7 décembre 2024 - 1 déc. 2012 à 11:22
eriiic Messages postés 24602 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 7 décembre 2024 - 1 déc. 2012 à 11:22
A voir également:
- Générer un nombre entier aléatoirement en VB
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Comment générer un qr code - Guide
- Generer mot de passe - Télécharger - Sécurité
- Nombre facile - Télécharger - Outils professionnels
8 réponses
Armojax
Messages postés
1860
Date d'inscription
mercredi 19 janvier 2005
Statut
Membre
Dernière intervention
2 octobre 2024
1 528
25 mars 2005 à 08:28
25 mars 2005 à 08:28
Bonjour Ean21,
Je sais faire en VBA, et je suppose qu'en VB c'est très ressemblant.
Utilise Rnd, qui génère aléatoirement un nombre entre 0 (inclus) et 1 (exclus).
Donc : (Rnd * 5) génère un nombre entre 0 inclus et 5 exclus.
Pour avoir un entier de 1 à 5 : Int(Rnd * 5) + 1
La suite "aléatoire" générée étant toujours identique, prendre la précaution de faire un "Randomize" avant la première utilisation, de façon à initialiser une valeur tirée de l'horloge interne.
Ajx.
Je sais faire en VBA, et je suppose qu'en VB c'est très ressemblant.
Utilise Rnd, qui génère aléatoirement un nombre entre 0 (inclus) et 1 (exclus).
Donc : (Rnd * 5) génère un nombre entre 0 inclus et 5 exclus.
Pour avoir un entier de 1 à 5 : Int(Rnd * 5) + 1
La suite "aléatoire" générée étant toujours identique, prendre la précaution de faire un "Randomize" avant la première utilisation, de façon à initialiser une valeur tirée de l'horloge interne.
Ajx.
Ean21
Messages postés
84
Date d'inscription
samedi 28 août 2004
Statut
Membre
Dernière intervention
7 février 2007
23
31 mars 2005 à 20:52
31 mars 2005 à 20:52
Merci pour ton aide, la génération fonctionne très bien!!
Pourrait-tu m'expliquer en quoi la fonction Randomize() est-elle nécessaire, car je ne comprends pas vraimen?...
Merci
Pourrait-tu m'expliquer en quoi la fonction Randomize() est-elle nécessaire, car je ne comprends pas vraimen?...
Merci
Armojax
Messages postés
1860
Date d'inscription
mercredi 19 janvier 2005
Statut
Membre
Dernière intervention
2 octobre 2024
1 528
31 mars 2005 à 23:39
31 mars 2005 à 23:39
Bonsoir Ean21,
La fonction Rnd est un générateur de nombres "aléatoires". Chaque valeur suivante résulte d'un algorithme assez compliqué, appliqué à la valeur précédente. La suite de nombres générée dépend donc de la valeur initiale du premier tirage.
Randomize fournit une valeur initiale tirée de l'horloge interne. Donc, à chaque fois qu'on lance Excel, il y a peu de chances que les séries tirées soient identiques.
Si on n'initialise pas avec Randomize, Excel partira toujours d'une même valeur initiale, et à chaque fois, on obtiendra une série "aléatoire" identique.
En fait d'aléatoire, le tirage est un tirage "calculé". La distribution des valeurs obtenues peut être considérée comme semblable à un tirage au sort. Tout dépend de la qualité de l'algorithme utilisé.
La fonction Rnd est un générateur de nombres "aléatoires". Chaque valeur suivante résulte d'un algorithme assez compliqué, appliqué à la valeur précédente. La suite de nombres générée dépend donc de la valeur initiale du premier tirage.
Randomize fournit une valeur initiale tirée de l'horloge interne. Donc, à chaque fois qu'on lance Excel, il y a peu de chances que les séries tirées soient identiques.
Si on n'initialise pas avec Randomize, Excel partira toujours d'une même valeur initiale, et à chaque fois, on obtiendra une série "aléatoire" identique.
En fait d'aléatoire, le tirage est un tirage "calculé". La distribution des valeurs obtenues peut être considérée comme semblable à un tirage au sort. Tout dépend de la qualité de l'algorithme utilisé.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour j 'utilise visual basic 2010( je débute et je galère).
Est ce que quelqu'un connait le code pour:
Quand j appuye sur un bouton
Cela m'affiche a l'écran un nombre entier de 15 chiffres au hazard.
Donc cela doit afficher un nombre entre 100000000000000 et 999999999999999
il faudrai que je puisse selectionner ce nombre avec la souris et par exemple faire un copier/coller.
Et que quand je reclique sur le bouton j'ai un nouveau nombre de 15 chiffres qui apparait
Merci aux personnes qi pourront m'aider
Est ce que quelqu'un connait le code pour:
Quand j appuye sur un bouton
Cela m'affiche a l'écran un nombre entier de 15 chiffres au hazard.
Donc cela doit afficher un nombre entre 100000000000000 et 999999999999999
il faudrai que je puisse selectionner ce nombre avec la souris et par exemple faire un copier/coller.
Et que quand je reclique sur le bouton j'ai un nouveau nombre de 15 chiffres qui apparait
Merci aux personnes qi pourront m'aider
Comment faire pour choisir un nombre entre deux définis et pas seulement entre zéro et un chiffre choisit. (En gros je voudrais pouvoir changer le zéro et le second chiffre)
Comme par exemple un chiffre entre 3 et 15.
Merci,
cecomog
Comme par exemple un chiffre entre 3 et 15.
Merci,
cecomog
Bonjour cecomog,
La fonction rnd() sort un nombre au hasard entre 0 et 1 (ne pas oublier de faire précéder par randomize, comme expliqué par Anonymous le 7 mars 2012 à 11:20).
Pour tirer un nombre qui soit ou 3 ou 15, tu peux donc procéder ainsi :
Je te l'ai fait ici avec une proba 50% pour chacun des deux nombres.
Mais tu peux également passer la proba à x/(1-x) comme tu le souhaites, en changeant dans mon code le 0.5 par la proba x que tu désires.
La fonction rnd() sort un nombre au hasard entre 0 et 1 (ne pas oublier de faire précéder par randomize, comme expliqué par Anonymous le 7 mars 2012 à 11:20).
Pour tirer un nombre qui soit ou 3 ou 15, tu peux donc procéder ainsi :
Randomize u=Rnd if u<0.5 then tirage=3 elseif u>=0.5 then tirage=15 endif
Je te l'ai fait ici avec une proba 50% pour chacun des deux nombres.
Mais tu peux également passer la proba à x/(1-x) comme tu le souhaites, en changeant dans mon code le 0.5 par la proba x que tu désires.
Bonjour à tous,
J'ai à mon tour une question, concernant la fonction Randomize.
J'ai fait des tests à partir de 3 programmes légèrement différents. La proba théorique à simuler était de 0,36%.
1. Lecture du randomize à chaque tirage :
Le randomize est ici dans la fonction qui fait les tirages au sort, donc lu avant chaque Rnd.
Résultat : proba simulée = 0,54% (obtenue une vingtaine de fois de suite, avec un nombre de tirages effectués variant de 1000 à 30000).
2. Pas de randomize dans le programme :
D'après ce que dit Armojax plus haut, je suis sensé obtenir à chaque fois le même résultat. J'ai lancé 2 fois (avec nombre de tirages au sort = 1000), je n'ai pas obtenu les mêmes résultats...
Proba simulée = 0,38%
3. Lecture du randomize une seule fois dans le programme :
J'ai cette fois mis le randomize à un endroit qui n'est lu qu'une seule fois dans l'ensemble du programme.
Proba simulée = 0,38% (obtenue sur 2 fois 1000 tirages au sort).
Ma question est donc : comment utiliser la fonction randomize de manière adéquate (à savoir : qui donne une proba simulée proche de la proba théorique, et avec un aléa qui ne soit pas "pré-déterminé") ?
Merci d'avance
J'ai à mon tour une question, concernant la fonction Randomize.
J'ai fait des tests à partir de 3 programmes légèrement différents. La proba théorique à simuler était de 0,36%.
1. Lecture du randomize à chaque tirage :
Le randomize est ici dans la fonction qui fait les tirages au sort, donc lu avant chaque Rnd.
Résultat : proba simulée = 0,54% (obtenue une vingtaine de fois de suite, avec un nombre de tirages effectués variant de 1000 à 30000).
2. Pas de randomize dans le programme :
D'après ce que dit Armojax plus haut, je suis sensé obtenir à chaque fois le même résultat. J'ai lancé 2 fois (avec nombre de tirages au sort = 1000), je n'ai pas obtenu les mêmes résultats...
Proba simulée = 0,38%
3. Lecture du randomize une seule fois dans le programme :
J'ai cette fois mis le randomize à un endroit qui n'est lu qu'une seule fois dans l'ensemble du programme.
Proba simulée = 0,38% (obtenue sur 2 fois 1000 tirages au sort).
Ma question est donc : comment utiliser la fonction randomize de manière adéquate (à savoir : qui donne une proba simulée proche de la proba théorique, et avec un aléa qui ne soit pas "pré-déterminé") ?
Merci d'avance
eriiic
Messages postés
24602
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
7 décembre 2024
7 245
1 déc. 2012 à 11:22
1 déc. 2012 à 11:22
Bonjour,
randomize sert, si tu veux des nombres de 1 à 100, à ne pas avoir 71, 54, 58, etc à chaque fois que tu lances le programme.
Il ne sert qu'à ça et à rien d'autre.
L'utiliser une seule fois est suffisant. Avec 13 chiffres significatif la 'chance' d'avoir 2 fois la même initialisation est quand même très faible.
Et si tu lances 1000 fois un dé, la probabilité d'avoir 1000 fois un 3 est faible, mais elle existe.
La loi des grands nombres nous dit seulement que plus l'échantillon est élevé, plus on s'approche de la probabilité calculée.
Donc augmente ton échantillon.
D'autre part, à partir du moment ou un nombre aléatoire est calculé à partir du précédent c'est un nombre pseudo-aléatoire et non pas de l'aléatoire pur.
eric
randomize sert, si tu veux des nombres de 1 à 100, à ne pas avoir 71, 54, 58, etc à chaque fois que tu lances le programme.
Il ne sert qu'à ça et à rien d'autre.
L'utiliser une seule fois est suffisant. Avec 13 chiffres significatif la 'chance' d'avoir 2 fois la même initialisation est quand même très faible.
Et si tu lances 1000 fois un dé, la probabilité d'avoir 1000 fois un 3 est faible, mais elle existe.
La loi des grands nombres nous dit seulement que plus l'échantillon est élevé, plus on s'approche de la probabilité calculée.
Donc augmente ton échantillon.
D'autre part, à partir du moment ou un nombre aléatoire est calculé à partir du précédent c'est un nombre pseudo-aléatoire et non pas de l'aléatoire pur.
eric