mercredi 5 août 2015

Faire de l'aléatoire sans revenir sur un élément (Algorithme)

Salut chers Hackademiciens,
J'étais entrain de travailler sur un petit projet web, qui consistait à faire un QCM Informatique (Programmation, Hacking, Réseaux, Informatique Générale, ...) en JavaScript.
Alors lors de la génération de questions, j'ai voulu que les questions s'affichent d'une façon aléatoire et pour cela j'ai utilisé la classe "Math" de JavaScript et sa méthode "Random" et tout a bien fonctionné, mais je me suis rendu compte que cette façon de le faire pouvait revenir sur une question plusieurs fois et ce qui est embettant pour la personne qui joue (Imagine qu'on te pose une question plusieurs fois dans une partie de jeux :p) du coup j'ai commencé a reflechir pour pouvoir trouver un moyen pour éviter cette répétition là mais en gardant l'aléatoire.

Et donc en refléchissant j'ai écrit un algorithme qui m'aide à faire cela
Voici le principe :
- Je crée un tableau contenant les éléments a trier (Ces élèments constituent en elles même les questions du QCM)
- Puis je commence à trier ce tableau d'une façon aléatoire
- Puis je crée un autre tableau qui va commencer à prendre l'élèment (i) traité et le stocker
- Et puis à la fin c'est ce tableau que j'affiche!

Du coup mes questions sont en aléatoire et on ne revient pas sur une question!

Voici le code de cet algorithme que j'ai implémenté en JavaScript (fichier code.js) :

Code:

function randomWithoutRep() {

        //Le tableau contenant les éléments à trier
        var tab = [18, 24, 3, 14, 53, 26];
        var i = 0;
        var taille = tab.length;

        //Le tableau qui va commencer a stocker les éléments trier
        var tab1 = [];
       
        while(i < taille) {
                var index = taille-i-1;
                var aleatoire = parseInt(Math.random() * index);
                var temp = tab[aleatoire];
                tab[aleatoire] = tab[index];
                tab[index] = temp;
                var element = tab.pop();

                tab1.push(element);
                alert(tab1);
                i++;
        }
}
randomWithoutRep();

Pour tester ceci, créer juste un fichier index.html auquel vous incluez le fichier code.js

PS : C'est juste un algorithme, donc vous pouvez le modifier comme vous voulez et le tester avec les questions à l'interieur du tableau et enlever le alert().
Je suis ouvert aux critiques :)


from Hackademics : Forum de hacking – hackers white hat – cours de securite informatique, apprendre langage python, tutoriels de reverse engineering http://ift.tt/1T2QRPP
via IFTTT

Aucun commentaire:

Enregistrer un commentaire