CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

nombre aléatoire differend

baiseur_de_trui
baiseur_de_trui
Niveau 3
24 mai 2010 à 15:01:04

Bonjour ca peut sembler bete mais dans mon programme j'ai besoin de faire une boucle qui apelle chaque fois un nombre aléatoire. Probleme c'est que faisant ca je tombe sur le meme nombre. par ex 50 nombre aléatoire entre 1 et 100 ba je tombe obligatoirement sur des chiffres identique.

Donc comment demander des chifres aléatoire qui soit differend entre eux.

Je pensais une boucle while mais ca marche pas

merci

saleGauss
saleGauss
Niveau 9
24 mai 2010 à 15:10:37

Il te faut :
1/ Un generateur de nombre aléatoire
2/ Penser à initialliser le dit generateur de nombre au debut de ton programme. géénrallement, ca s'initialise avec un nombre (une "graine"). Il est conseillé d'utiliser au minimum le tps écoulé depuis le 01/01/1970 grace à la fonction time() pour avior une graine pas trop mauvaise.

Normallement, tu devrais avoir assez d'infos pour chercher sur le net, suivant ton langage, que tu n'a même pas précisé...

guyver2
guyver2
Niveau 10
24 mai 2010 à 19:53:01

aussi, pour ne pas sortir plusieurs fois le même nombre, il te suffit de tenir a jour une liste des nombres deja tirés et de vérifier a chaque tirage si le nombre à deja été vu ou non.

chacharles31
chacharles31
Niveau 61
29 mai 2010 à 00:05:08

... et si il a déjà été tiré, tu choisi le 1er suivant libre dans la liste.

Malheureusement, ca fait pas des nombres super aléatoire.
si il y a un groupe de nombre deja tiré, le suivant de ce groupe a le plus de chance de sortir que les nombre 'isolé'

Pour etre mathématiquement correcte:
1) tu fait une liste, un tableau avec tout tes nombres écrit dedans ( ex 100)
T[0] = 0
T[1] = 1
T[2] = 2 etc..
tu tire un nombre entre 0 et 100

quand t'en tire un tu retire le nombre du tableau
(ex: tu as tiré 2)

T[0] = 0
T[1] = 1
T[2] = 3
T[3] = 4
le num suivant sera choisi entre 0 et 99
etc etc
la tu aura un tirage equiprobable sans doublon
ca a l'air relou, mais c'est exactement ce qu'il se passe en tirant des cartes au pif d'un paquet de carte ordonné

deepblue
deepblue
Niveau 16
29 mai 2010 à 05:29:26

Faux. Si tu as 101 nombres de 0 à 100, et que le 2 est tiré, 100 peut etre tiré au prochain random, donc en garde 101 nombres possiblement randoumé au prochain tour. Il faut donc faire comme guyver2 a dit.

chacharles31
chacharles31
Niveau 61
29 mai 2010 à 11:37:31

100, 101
c'est des finitions

je parlais du principe
pour l'équiprobabilité toussa

N4k1m
N4k1m
Niveau 6
29 mai 2010 à 19:42:18

Tu veux ça dans quel langage ? en C ou C++ je peux te le faire si tu veux ?

aussi non voici un pseudo-code de ce que j'aurais fait :

/* Création (dynamique) d'un tableau qui contiendras les n nombres aléatoires */
T[0...n-1]

pour i <- 0 jusque n (n non compris)
{
randomNumber = fonction qui genere un nb aléatoire

pour j <- 0 jusque n (n non compris) /*index pour parcourir le tableau */
{
if T[j] == randomNumber
randomNumber += 1 /* tu peux re-générer un nb aléatoire mais opération lourde */
break /* on arrete de boucler */
}

ajouter randomNumber au tableau

/* utiliser le nombre aléatoire */
}

Mais ça ne serait pas mieux que tu fasses une fonction qui retourne un nombre aléatoire au lieu de faire tout ton programme dans une boucle ? ça serait moins lourd comme opération :ok:

N4k1m
N4k1m
Niveau 6
29 mai 2010 à 20:34:49

c'est faut ce que j'ai dit :ok: ;)

Si le randomNumber est déjà présent dans le tableau (donc déjà sorti) il faut que tu regardes aussi si le nouveau ramdomNumber n'y est pas non plus ... si il y est aussi, redéfinir encore un nouveau randomNumber et à nouveau regarder ds le tableau etc ...

je te conseille donc de créer des fonctions et de boucler pour faire tout ca ;)

(lorsque un nombre aléatoire a déjà été tiré, je te conseille d'agrémenter ce nombre au lieu de réutiliser la fonction qui génère un nombre aléatoire car c''est une opération bcp plus lourde :ok: )

dnob700
dnob700
Niveau 10
30 mai 2010 à 22:22:47

"Faux. Si tu as 101 nombres de 0 à 100, et que le 2 est tiré, 100 peut etre tiré au prochain random, donc en garde 101 nombres possiblement randoumé au prochain tour. Il faut donc faire comme guyver2 a dit. "

Chacharle voulait dire que tu déréférence une des case du tableau dont l'indice est entre 0 et 99. Mais dans la case 99 il y a bien le nombre '100'. Son algo est donc correcte.

deepblue
deepblue
Niveau 16
30 mai 2010 à 23:19:43

Ouai j'ai lu/compris de travers (j'ai zapé le coup des indices et c'est de ça dont il fait référence), au temps pour moi :-)

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment