Dictionary, doppelte Value in Zufall vermeiden

  • VB.NET

Es gibt 43 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Ich habe das immer mit einer "String-Formatvorlage" gemacht, und die dann je nach gewünschter Size-Grösse, in ein StringBuilder eingespielt, durchgemischt, und die dann durch einen CaseBlock gejagt.

    VB.NET-Quellcode

    1. 'n >> char number, s >> char specialcharacter, u >> char upper, l >> char lower

    Es geht aber auch so, wie es EDR gezeigt hat. Die endliche Länge der jeweiligen Zeichensätze muss halt auch noch in die Forschleife #15 mit einbezogen werden.

    Das einfliessen lassen des Zeichensatzes in die TextBox #21 würde ich aber trotzdem nochmals mit einer OrderBy-Shuffel bewerkstelligen, damit die Erkennung der Positionen der einzelnen Zeichen nicht offensichtlich sind. Das ist aber nur wichtig, wenn es sich um ein Passwort handelt, und diese Anforderung steht im Beitrag #1 nicht.

    Ich denke dem Threadsteller sind jetzt wirklich ein paar ganz gute Vorgehensweisen gezeigt worden, um seinem Vorhaben noch den Finish zu geben.

    Es geht übrigens auch ohne Remove, in dem die ausgewählten Zeichensätze vorgängig durchgemischt werden, und mittels 4 Idexes einfach beim Durchiterieren durch zeichenSaetze nach Auswahl um eins hochgezählt werden.

    Freundliche Grüsse

    exc-jdbi

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „exc-jdbi“ ()

    Hallo
    ja das habe ich auch festgestellt.
    Hab das Problem so gelöst.

    VB.NET-Quellcode

    1. '
    2. If rb_Kb_Za_Sz.Checked Then
    3. zeichenSaetze.Add("abcdefghijklmnopqrstuvwxyz")
    4. zeichenSaetze.Add("1234567890")
    5. zeichenSaetze.Add("<,.-#+>;:-*!§$%&()=?ß")
    6. ncZeichenlaenge.Maximum = 30
    7. End If
    8. '
    9. If rb_Za.Checked Then
    10. zeichenSaetze.Add("1234567890")
    11. ncZeichenlaenge.Maximum = 10
    12. End If
    13. '
    14. If rb_Za_Sz.Checked Then
    15. zeichenSaetze.Add("1234567890")
    16. zeichenSaetze.Add("<,.-#+>;:-*!§$%&()=?ß")
    17. ncZeichenlaenge.Maximum = 20
    18. End If

    Anstatt Checkboxen hab ich RadioButton genommen über die ich in

    VB.NET-Quellcode

    1. zeichenSaetze As New List(Of String)
    einfüge.
    Es sind nur 15 Kombinationen ( Grossbuchstaben-Zahlen, oder Sonderzeichen-zahlen,oder eine andere).
    Das heist 15 Radiobuttons (fürjede Kombination ein RB.), wo ich das Maximum der Länge für jede Kombination bestimme.
    So funktioniert es ohne Fehler. (was ich bis jetzt festgestellt hab).
    MfG. Willi
    @papawt

    papawt schrieb:

    Das heist 15 Radiobuttons


    4 Single-RadioButton würden doch reichen, dann hast du genau 16 Kombinationen (2^4). Wenn die erste Kombination (4x .Checked = False) weggelassen wird, sind es genau deine 15 Kombinationen.

    Freundliche Grüsse

    exc-jdbi