Visual basic 2010 Losowanie liter i cyfr na raz

Cześć,

Chcę zrobić aby w jednym textboxie losowało się po naciśnięciu buttona jakieś hasło powiedzmy tylko żeby zawierało ono i cyfry i litery najlepiej jeszcze zeby litery miały nie które wielkie litery.

z góry dzięki

Spoko dzięki za info.

Jak zrobisz to klepnij tu poradnik dla potomnych.

Możesz do tego wykorzystać funkcję rand() (C/C++). Ustawisz taki zakres liczb, żeby pasował do kodów ASCII potrzebnych znaków (poszukaj tabelę kodów ASCII w Google). Otrzymanego w pseudolosowy sposób int’a rzutujesz na char’a i po sprawie. Może być również potrzebna instrukcja warunkowa, która nie będzie przyjmować znaków takich jak “:”, “;”, “<” itp.

Spróbuj zrobić coś sam i pochwal się tym. Spróbujemy Ci pomóc, jeżeli pokażesz, że wykorzystałeś własne siły, a nie cudze :wink:

Popracuj również nad proszeniem o pomoc, bo o to Ci chodziło. Zgadza się?

Algorytm może każdy sobie zaprogramować według własnego uznania. Ostatnio coraz częściej wymaga się aby oprócz liter i cyfr były także w haśle znaki specjalne.
Najpierw ustalamy liczę znaków w haśle. na stale albo do wyboru z okna tekstowego. Jeżeli w haśle mają występować duże i małę litery, cyfry i znaki specjalne to hasło musi zawierać co najmniej 4 znaki. Liczbę znaków specjalnych ustalamy na stałe lub podajemy zakres np od 1 do 4.
LiczbaZnakow=15: MinLiczbaSpec=1 :MaxLiczbaSpec=4
i losujemy liczbę znaków: LiczbaZnakowSpec = MinLiczbaSpec + Abs(Int(Rnd * MaxLiczbaSpec - 1))
podobnie ustalamy liczbę cyfr w haśle np. LiczbaCyfrMin = 1: LiczbaCyfrMax=4
oraz losujemy liczbę cyfr w haśle: LiczbaCyfr = LiczbaCyfrMin + CInt(Rnd * LiczbaCyfrMax)
Pozostała liczba znaków to będą litery: LiczbaLiter = LiczbaZnakow - LiczbaCyfr - LiczbaZnakowSpec
MinLiterMalych = 1: MaxLiterMalych = LiczbaLiter - MinLiterMalych:LiczbaDuzychLiter = LiczbaLiter - LiczbaMalychLiter.
Teraz trzeba losować te znaki i gdzieś zapisać. najprościej będzie utworzyć na formie dodatkowy obiekt listy, nadać jej cechę visible=false. i tam zapisywać te wylosowane znaki. To jest lista pomocnicza i nie powinna być widoczna. Ponieważ kody znaków specjalnych nie są kolejnymi liczbami to tworzymy ich zbiór.
Ty sam już dopisz linie gdyby liczba danych linii była za duża albo za mała, tak żeby suma się zgadzała. Najprościej ustalić na stałe liczbę wszystkich znaków(liter dużych, małych, cyfr i znaków specjalnych to nie będzie takich kłopotów. Np.
LiczbaZnakow=15:LiczbaZnakowSpec=1:LiczbaCyfr=4: LiczbaMalychliter=6: LiczbaDuzychLiter=4
ZnakiSpec = “`~’!@#$%^&*(){}[];:|<>/?,.+=-_” + Chr(34): List1.Clear:  haslo=""
For i = 1 To LiczbaZnakowSpec:Los = Mid(ZnakiSpec, CInt(Rnd * 28) + 1, 1):List1.AddItem Los:Next i
For i = 1 To LiczbaMalychLiter:Los = Chr(97 + CInt(Rnd * 25)):List1.AddItem Los:Next i
For i = 1 To LiczbaDuzychLiter:Los = Chr(65 + CInt(Rnd * 25)):List1.AddItem Los:Next i
For i = 1 To LiczbaCyfr:Los = Chr(48 + CInt(Rnd * 9)):List1.AddItem Los:Next i

Na zakończenie losujemy z listy kolejno numery linii i  wartości każdej linii dopisujemy do hasła. Po tym zabiegu linia musi zostać usunięta (removeitem)

For i = 0 To List1.ListCount - 1
Numer = CInt(Rnd * (List1.ListCount - 1)): Los = List1.List(Numer)
Haslo = Haslo + Los: List1.RemoveItem (Numer)
Next i
Text1.Text = Haslo

A u możesz obejrzeć jak ja to zrobiłem: MyPassword.zip