8792 sujets

Développement web côté serveur, CMS

Pages :
bonsoir tout le monde
n'ayant rien d'autre à faire je me suis demandé si c'était possible de calculer combien il y aurait de possibilités de chaine de caractère, biensur chaque caracteres ne devrait être présent qu'une fois dans chaque chaine (sinon un nombre infini de possibilités serait possible),
voici le code que j'ai fait (php):
$res=((26*26)*26);
$nb_dep=1;
while($nb_dep!=10)
{
	$res*=$res;
	$nb_dep++;
}
echo $res;

certes fatigué, mais convaincu d'être sur le droit chemin je suis pas très ingénieux en conception de calculs (comme il est facile de le constater) Smiley lol
voilà comment je l'interprete : je calcule le nombre de chaines possibles avec seulement 26 lettres dans $res puis crée une boucle pultipliant $res par lui même puissance 10 afin de déboucher sur le nombre de chaine possible contenant 26 lettres et 10 chiffres (chaque éventualité ne contenant qu'un seul exemplaire de chaque caractere donc)..
pour conclure, le calcul ne débouche sur rien et php me retourne un truc du genre : 1.#INF
-__-
xd c'est clair que je fais du hors piste mais j'aimerai bien qu'un esprit sain éclaire ma route..est ce que quelqu'un sait comment calculer ça? je répète au cas où : je souhaite connaître combien il y a de possibilités de chaines de caractères alphanumériques (chaque éventualité ne contenant qu'une seule fois un même caractère) l'une de ces éventualités :
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
une autre :
BACDEFGHIJKLMNOPQRSTUVWXYZ0123456789
encore une autre :
BCADEFGHIJKLMNOPQRSTUVWXYZ0123456789

merci pour le temps que vous avez à perdre, mais avouez quand même que c'est intriguant de savoir ça! non? Smiley sweatdrop
Modifié par CesarX (25 Feb 2007 - 18:52)
Administrateur
Bonjour,

pour être certain de parler du même problème: tu cherches dans une chaîne de caractère d'une certaine longueur N et composée de caractères tous différents (N=26 de A à Z ou N=36 de A à Z+0 à 9 ou encore N=3 avec A, B et C mais jamais D ou H ou Z) combien de chaînes différentes il existe en mélangeant tout ça, c'est bien ça?

Une 1ère piste: http://fr.wikipedia.org/wiki/Combinatoire
Je te laisse regarder si c'est un arrangement, une combinaison, une permutation, etc Smiley cligne

EDIT: il y a en PHP une limite à la taille de chaque variable numérique mais heureusement il existe une extension pour les nombres de toutes tailles. Je te déconseille de foncer sur PHP avant d'avoir résolu le problème sur papier par contre Smiley lol
Modifié par Felipe (25 Feb 2007 - 03:46)
bonjour,
Il me semble que tu veuilles calculer le nombre de probabilités avec l'alphabet et les chiffres, je me souvients (enfin il me semble) que ce calcul est de la forme :
26x25x24x...x1/26 pour des probabilité non ordonnées.
C'est peut-être une piste à fouiller.
Pour une chaîne de longueur n, ça doit normalement te donner un calcul de la forme :
26! / (n! * (26-n)!)
ce qui fait une probabilité très infime de cracker un mot de passe par hasard...
Administrateur
Il y a aussi une probabilité très infime de se rappeler d'un tel mot de passe Smiley lol
Felipe a écrit :
Bonjour,
pour être certain de parler du même problème: tu cherches dans une chaîne de caractère d'une certaine longueur N et composée de caractères tous différents (N=26 de A à Z ou N=36 de A à Z+0 à 9 ou encore N=3 avec A, B et C mais jamais D ou H ou Z) combien de chaînes différentes il existe en mélangeant tout ça, c'est bien ça?

oui c'est ça, mais apparemment php n'est pas la meilleure solution..je vais sortir ma calculette alors xd
erf je sais même pas par où commencer je vais attendre la rentrée et demander à mon prof de maths -__- ..
le mieux aurait été de savoir combien il y a de possibilités en prennant en compte le fait qu'une chaine puisse ne pas contenir le même nombre d'occurence, du style, 15 lettres (chacune différente) puis 8 chiffres (différents eux aussi) et là c'est clair que ça rallonge le résultat, déjà qu'il est surement de l'ordre du millier (voir million) de milliard (voir plus) xd on finit par se dire que ça sert effectivement à rien de le savoir Smiley sweatdrop me voilà donc bien avancé
ps : j'avais déjà fait un calcul bizarre visant à trouver le temps qu'il reste à un champs de type int dans une bdd mysql, avant qu'il ne soit obsolete, (censé contenir un timestamp). J'avais trouvé dans les 3130 années, voici le truc en question :

<?php 

$nb_sc_an=(365.25*(24*((60)*60)));
$int=100000000000;
$nb_an_rslt=(($int-time())/$nb_sc_an);
echo $nb_an_rslt;

?>


$nb_sc_an renvoie le nombre de secondes qu'il y a dans une année de 365,25 jours (années bisextiles obligent).
$int renvoie la limite qu'admet un champs de type int
$nb_an_rslt est égal à $int moins le timestamp actuel (c'est à dire la différence de secondes entre le timestamp instantané et celui de la limite) divisé par le nombre de secondes d'une année ce qui va renvoyer le nombre d'années qui devront être ecoulées entre l'heure instantanée et la limite $int quand elle sera atteinte.

je suppose qu'il est correct étant donnée le résultat..
Le nombre de mots que l'on peut faire avec N caractères sans répétitions c'est N! (factorielle N), c'est le nombre de permutation possible.

N pour le 1er, N-1 pour le suivant et ainsi de suite, soit en multipliant le tout : N!

Que ça soit des lettres, des chiffres, des brocolis, on s'en fout.

On considère la notion de mot et de caractères comme on veut suivant comment ça nous arrange.

Sinon : quel interêt ? (en général et sur Alsa)

++
Olivier a écrit :
Que ça soit des lettres, des chiffres, des brocolis, on s'en fout.

ouai c'est vrai au final on se retrouve avec 36 caracteres differents
c'est moins complexe que l'idée que je m'en suis fait..
quel interet? se faire une idée sur ce sujet, simplement par curiosité en général et sur alsa tout simplement car le niveau n'est pas des moins haut.. désolé si dérange Smiley rolleyes mais ça change un peu du css, principal sujet de conversation ici, et puis c'est pour ça que j'ai posté ici, dans le bar Smiley murf
CesarX a écrit :

ouai c'est vrai au final on se retrouve avec 36 caracteres differents
c'est moins complexe que l'idée que je m'en suis fait..
quel interet? se faire une idée sur ce sujet, simplement par curiosité en général et sur alsa tout simplement car le niveau n'est pas des moins haut.. désolé si dérange Smiley rolleyes mais ça change un peu du css, principal sujet de conversation ici, et puis c'est pour ça que j'ai posté ici, dans le bar Smiley murf


Mwui...

c'est pas que ça me dérange foncièrement, mais je voyais juste pas trop l'intérêt sur Alsa, c'est pas un forum de combinatoire Smiley lol
Salut,
Olivier a écrit :
c'est pas que ça me dérange foncièrement, mais je voyais juste pas trop l'intérêt sur Alsa, c'est pas un forum de combinatoire Smiley lol
Ce n'est pas un forum sur les trolls non plus, ça n'empêche pas d'en voir passer quelques uns. Smiley cligne
Julien Royer a écrit :
Salut,Ce n'est pas un forum sur les trolls non plus, ça n'empêche pas d'en voir passer quelques uns. Smiley cligne


Avec une spécialité combinatoire de trolls Smiley lol
olivier a écrit :
je voyais juste pas trop l'intérêt sur Alsa, c'est pas un forum de combinatoire

bah je savais même pas comment le calculer, comment se douter d'un quelconque rapport avec les combinatoires..
bref je vois que ça provoque quelques réactions je vais clore le sujet avec le résultat du calcul xd :
environ 3.7 *10 exposant 41

calcul :
<?php 

$nb_dep=36;
$res=36;
while($nb_dep!=1)
{
	$res=$res*($nb_dep-1);
	$nb_dep=($nb_dep-1);
}
echo $res;

?>


la prochaine fois je posterai en même temps cette question, "comment mettre en page ce calcul?" histoire de na pas être source de provoque ou même accusé de trolling :d voilà j'ai fini de paranoyer bonne soirée..
Modifié par CesarX (25 Feb 2007 - 18:20)
<?php 

$nb_dep=36;
$res=$nb_dep;
while($nb_dep!=1)
{
	$nb_dep--;
	$res*=$nb_dep;
}
echo $res;

?>


Ce code me paraît meilleur Smiley cligne
en effet ^^ je me coucherai moins con ce soir..
merci donc à felipe pour le lien wikipedia
mdr voilà qui résout un tas de problèmes, par contre il semble qu'il faille activer une extension car php ne reconnait pas la fonction gmp_fact();
CesarX a écrit :
mdr voilà qui résout un tas de problèmes, par contre il semble qu'il faille activer une extension car php ne reconnait pas la fonction gmp_fact();

Avec gmp oui a priori.

Sinon, sans module complémentaire, écrire une fonction factorielle serait de toute façon plus modulable que ce que tu as fais ici.
c'est clair, mais :
"Note : Cette extension n'est pas disponible sur les plate-formes Windows."
-__-'
apparemment, l'extension est téléchargeable, mais que faire d'un tel fichier..
http://www.swox.com/gmp/#DOWNLOAD
pourtant j'ai php 5.2 donc bon si elle n'est pas disponible sous windows.. voilà quoi xd
Bah, c'est pas grave, tu écris ta propre fonction factorielle, c'est pas bien compliqué :

function factorielle ($n) {
$total = 1;
for ($i=1; $i <= $n; $i++) $total*=$i;
return $total;
}
Pages :