Qu'est-ce qu'un accès par faux pointeur ?

geekat Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   -  
geekat Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir,
appelé aussi SWAP ou Shuffle.
J'ai cherché sur internet et je ne trouve pas de résultat. Pourtant ces mots ont été prononcé par mon prof.
C'est une méthode qui permet de randomiser des vecteurs aléatoirement en les parcourant une et une seule fois.
Exemple :
vect contient :
- indices : 0 1 2 3 4 5 ............. 149
- valeurs : 5 4 26 ..............
La méthode :
Pour initialiser les valeurs dans vect aléatoirement, on fait ceci :
on met 5 dans la case n°0 et on met 0 dans la case n°5
on met 4 dans la case n°1 et on met 1 dans la case n°4
....
C'est ce que j'ai compris.
Après le souci c'est que j'ai des valeurs doubles, dans ce cas comment faire l'échange ?

Merci

1 réponse

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    Peu importe le type de données, on déplace les valeurs d'une case à une autre sans regarder ce qu'elles sont.

    Algorithme :

    n = taille des données

    tant que n > 1
    k = nombre aléatoire entre 1 et n
    permuter les cases k et n
    n = n-1
    fin
    1
    1. geekat Messages postés 223 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci pour té réponse.
      k et n représentent des indices ?
      comment permuter k et n ? k=n et n=k ?
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      Il ne faut pas permuter les indices, mais les cases qui se trouvent à ces indices.

      L'implémentation dépendra de ton langage de programmation mais ce sera quelque chose comme ceci :

      temp = data[k]
      data[k] = data[n]
      data[n] = temp
      0
    3. geekat Messages postés 223 Date d'inscription   Statut Membre Dernière intervention  
       
      Ah d'accord merciiii!
      J'ai une autre question : je dois obtenir des nombres aléatoires, le souci c'est que je ne dois pas obtenir le même nombre 2 fois. Comment faire en sorte d'avoir une liste de nombre qui n'ont aucune occurrence .
      0