Hét vraag- en antwoordplatform van Nederland

Het aantal mogelijkheden uitrekenen als ik random codes wil genereren?

Ik wil de computer random codes laten genereren.
De 1ste code moet altijd bestaan uit 50 tekens.
De 2e code moet altijd bestaan uit 200 tekens.

De codes mogen gebruik maken van a - z, A - Z en 0 - 9
Alleen de code van allemaal nullen is ongeldig.


Ik moet daarnaast nog uitzoeken hoe ik deze manier van coderen
krijg gefixed in PHP met deze eisen. Als iemand mij daarbij kan helpen zou ik heel blij zijn.
Tot nu toe kwam ik niet verder dan mt_rand() functie lijkt me niet een optie, omdat dit alleen met cijfers werkt.

Verwijderde gebruiker
7 jaar geleden
1.8K
kierkegaard47
7 jaar geleden
Om het aantal mogelijkheden voor een combinatie van een aantal tekens te vinden, laten we met cijfers alleen beginnen (omdat je daar al mee vertrouwd bent). Hoeveel mogelijkheden zijn er als je één cijfer willekeurig mag kiezen ? 10 , namelijk de cijfers 0 t.m 9.
Hoeveel mogelijkheden zijn er als je twéé cijfers willekeurig mag kiezen? 100, dit zijn precies de getallen 00 tot en met 99. Ofwel 10* 10 = 10^2 mogelijkheden (we negeren nog even dat 00 eigenlijk niet mee zou mogen doen).
Hoeveel mogelijkheden zijn er als je drie cijfers willekeurig mag kiezen? 1000, dit zijn precies de getallen 000 tot en met 999. Ofwel 10* 10 *10= 10^3 mogelijkheden.). En zo verder. Voor een stuk code dat uit 'n' cijferst bestaat, zou je 10^n mogelijkheden hebben, juist omdat je 10 mogelijkheden voor ieder cijfer afzonderlijk hebt. Alleen hebben we in dit geval méér dan 10 mogelijkheden per teken. Hoeveel? a-z: 26 mogelijkheden
A-Z: nog eens 26 mogelijkheden
0-9 : 10 mogelijkheden Samen 62 mogelijkheden per teken. Dezelfde redenering als hierboven gebruikend levert dat 62^50 mogelijkheden op voor een willekeurige string van 50 van zulke tekens lang.
Mag de string van 50 nullen niet mee doen, dan wordt dat aantal eentje minder, 62^50-1.
Net zo vinden we dat voor de string van 200 lang er 62^200-1 mogelijkheden zijn. Hoe je dit in php moet doen weet ik niet, ik ken de taal niet. Maar een mogelijkheid lijkt me om eerst een generator te schrijven die een getal tussen de 0 en 61 kan genereren, en vervolgens ieder getal aan een teken te koppelen (dus bv. 0=a, ..26=z, 27=A,..52=Z, 53=0, ..62=9(, en zo ieder teken van de string los te genereren.

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Antwoorden (1)

Voor het eerste karakter heb je 26 mogelijkheden (= alle letters van het alfabet in kleine letters) + 26 mogelijkheden (= alle letters van het alfabet in hoofdletters) + 10 mogelijkheden (= alle getallen) = 62 mogelijkheden.

Voor het tweede karakters heb je weer 62 mogelijkheden.

De eerste code heeft 50 karakters. Dat is dan volgens mij 50 tot de macht 62 mogelijkheden = 2.1684043449710088680149056017399e+105

De tweede code heeft 200 karakters. Dat moet dan 200 tot de macht 62 zijn, kortom erg veel mogelijkheden.

Wat het programmeren betreft: voor a-z kun je de waarden van ASCII-codes gebruiken: ASCII-code 65 t/m 90. De ord-functie van PHP kan je daarbij dan het juiste karakter geven.

Met mt_rand() zat je wel op het juiste spoor. Alleen wist je nog niet hoe je die functie ook voor karakters kon inzetten. Die functie kun je dus gebruiken om een waarde te selecteren tussen 65 en 90. Daarvan zoek je dan het bijbehorende karakter op. Dat doe je dan ook voor de hoofdletter-variant en dan nog een keer om een getal tussen 0 en 9 te trekken. Dan heb je 3 methodes en welk van die methodes je wanneer wilt inzetten, dat kun je op hun beurt ook random laten bepalen.
(Lees meer...)
Verwijderde gebruiker
7 jaar geleden

Weet jij het beter..?

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

0 / 2500
Gekozen afbeelding