2 solution possibles :
- Faire un tableau avec toutes les possibilité et choisir un élément, ensuite retirer l'élément du tableau et recommencer jusqu'à ce que le tableau soit vide
- Autre solution, un peu moins conseillée, si tu obtiens le même nombre que déjà tiré, faire un +1 jusqu'à trouver un numéro non utilisé.
J'interviens principalement en VB6, VB.NET et C#, mais la modération m'amène souvent sur d'autre langages.
En VB.NET pensez à activer "Option Explicit" et "Option Strict".
Bonjour,
Une piste :
from random import choice print(choice([i for i in range(0,9) if i not in [2,5,7]]))
Dans une boucle, il suffira de remplacer [2,5,7] par le tableau des numéros déjà tirés etc...
Bonjour,
Tu peux créer une liste triée aléatoirement, et après l'utiliser avec un indice.
import random l=random.sample(list(range(1,53)),52) print(l)
Bonjour lulu
En fait il me faudrait un programme qui écrit le tirage au hasard quelque part et que lors du suivant tirage il vérifie que le nombre pris au hasard est pas déjà écrit
c'est une mauvaise idée.
On est d'accord que 52, ça représente un jeu de carte.
Pour simplifier la suite, tirer une carte ça veut dire lancer un dé à 52 faces imaginaire qui va nous donner un numéro n et prendre dans le jeu neuf la nième carte.
En faisant comme tu dis, ça revient à prendre un jeu neuf et tirer une carte.
Puis, prendre un jeu neuf, tirer une carte et vérifier si cette carte n'est pas celle déjà tirer.
Bon déjà, il faut prévoir au moins 52 jeux de cartes neufs.
Mais surtout, au début disons à la louche, les 10 / 15 premières cartes, avec un peu de chance au premier tirage, on aura une nouvelle carte.
Et puis on va commencer à tirer des cartes qu'on a déjà, et donc multiplier les jeux de cartes.
Et plus ça va aller plus, la probabilité de tirer une mauvaise carte va augmenter.
Quand après, 100, 200, p'tet même plus jeux jeux de cartes, on arrive à la 52 carte.
A chaque lancé de dé on a 51 chances contre un de tirer une carte inappropriée.
Là on va en user des jeux de cartes, avant de piocher la bonne.
Donc ta méthode, prends énormément de temps, coûté beaucoup d'argent (il faut acheter plein de jeux de cartes) et génère énormément de déchets.
Pour l'ordinateur c'est pareil, ça va prendre du temps, coûter en ressources système (processeur, temps d'accès, mémoire) et utiliser de la mémoire pour rien (déchet). Et en plus sur un coup de malchance ça peut virer à la boucle quasi infinie.
Dans la vraie vie, on fait avec un seul paquet, de 2 façons différentes
Ça coute un paquet de carte neuf et une place pour poser la pile de carte tirées.
Ça prends le temps de tirer 51 cartes + le temps de déplacer celle qui reste.
Ça ne génère aucun déchet.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
PS bonjour aux copains qui étaient déjà intervenus.
Modifié le 11 mars 2023 à 17:05
En fait il me faudrait un programme qui écrit le tirage au hasard quelque part et que lors du suivant tirage il vérifie que le nombre pris au hasard est pas déjà écrit.
J'essaie de faire un truc comme ça :
Mais je galère un peu... Surtout que ce que je fais ça marche pas du tout je viens de m'en rendre compte xD
12 mars 2023 à 05:38
Bonjour,
Quelle est la finalité de ce code ?