Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 08-06-2009 12:07:28

n0mad
Membre
Inscription : 08-06-2009
Messages : 3

Generation pseudo-aléatoire de chaines [Résolu]

Bonjour,

Je suis à la recherche d'une fonction/procédure mathématique pour générer de façon pseudo-aléatoire une suite de caractères - sans jamais ressortir 2 fois la même suite - et ce jusqu'à ce qu'un ensemble définit devienne "vide".


Je n'ai pas franchement un bon background mathématique (c'est pour ça que je m'en remet à vous!) et je ne sais pas si c'est possible. L'idée qui se cache derrière est la suivante :

alphabet = "abcd"
longueur = 4

combinaisons possibles :
- aaaa
- aaab
- aaac
- aaad
- aaba
- aabb
- ....
- dddd

Ce que je cherche à faire c'est donc de produire cette suite, mais dans un ordre (pseudo-)aléatoire :
- adcd
- aacd
- daaa
- .. etc

Actuellement, je sais le faire, mais je fais comme suis :
- calcul de toutes les combinaisons possibles et stockage en mémoire (oui derrière il y a un enjeux de programmation !).
- prise d'une combinaison aléatoirement - jusqu'à ce que toutes les combinaisons aie été prises.

Ca fonctionne très bien, mais avec un espace mémoire limité (1-2Go), on ne peut pas stocker toutes les combinaisons dans le cas d'un alphabet beaucoup plus grand que "abcd" et/ou une longueur plus grande.

Mon idée est donc d'appeler une fonction mathématique, mais je n'ai aucune idée de comment faire une telle fonction mathématique, ni même si c'est possible.


Si vous avez des pistes...


PS : vous l'aurez compris je pense il s'agit de génération de mot de passe.

Merci

Hors ligne

#2 08-06-2009 12:22:54

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 385

Re : Generation pseudo-aléatoire de chaines [Résolu]

Bonjour,


A défaut de piste immédiate (c'est possible, la suite prouve que oui), je te propose un freeware tout bête qui fait ce travail, regarde du côté de :
http://www.01net.com/windows/Utilitaire … 10657.html lje l'utilisais pour générer 150 à 200 mots de passe aléatoires, chaque début d'année scolaire...


@+

Hors ligne

#3 08-06-2009 12:31:24

n0mad
Membre
Inscription : 08-06-2009
Messages : 3

Re : Generation pseudo-aléatoire de chaines [Résolu]

Merci yoshi de ta réponse,

Je viens de regarder, effectivement c'est freeware, mais les sources ne sont pas à disposition! Et j'ai pas trop envie de faire du reverse... :o)

Quoi qu'il en soit, je crois que l'approche d'un générateur de mot de passe est différente de mon problème car si le programme génére quelques mot de passes identiques ce n'est pas bien grave, tandis que dans mon cas il ne faut surtout pas qu'un mot de passe soient générés plus d'une fois.

Je pensais à faire 4 matrices carrés et prendre les lettres aléatoire dedans et marqué les positions prises....c'est du bricolage mais ça pourrait marché...

Une autre idée/piste ?

Merci

Hors ligne

#4 08-06-2009 13:54:10

n0mad
Membre
Inscription : 08-06-2009
Messages : 3

Re : Generation pseudo-aléatoire de chaines [Résolu]

Hello,

Peut-etre un problème plus simple.

Dans l'exemple précédent, on a :
- alphabet = "abcd"
- longueur = 4

Le nombre de combinaisons est donc de 4^4 = 256 combinaisons. On peut donc voire le problème sous la forme suivante : piocher au hasard un nombre compris entre 0 et 256 - évidement chaque nombre ne doit sortir qu'une seule fois...

c'est plus simple ? =)

Dernière modification par n0mad (08-06-2009 13:54:34)

Hors ligne

#5 08-06-2009 14:01:17

Fred
Administrateur
Inscription : 26-09-2005
Messages : 7 349

Re : Generation pseudo-aléatoire de chaines [Résolu]

Salut,

  Il faut trouver un dictionnaire entre entier choisi au hasard et ton mot de passe.
Si ton choix de nombre aléatoire renvoie 0, tu retournes aaaa
s'il renvoie 1, tu retournes aaab
s'il renvoie 2, tu retourne aaac
s'il renvoie 3, tu retournes aaad
s'il renvoie 4, tu retournes aaba

Dans ce cas, pas besoin de stocker autre chose qu'un tableau de booléens pour savoir si l'entier a déjà été choisi ou non,
et ca, c'est l'information que tu as besoin au minimum de stocker.

Yoshi se fera un plaisir de t'écrire une fonction comme la précédente en Python!

F.

Hors ligne

Pied de page des forums