Sehr ähnlich der Antwort von Pseudonym, die mit anderen Mitteln erhalten wurde.
Die Gesamtzahl der verfügbaren Kombinationen kann mit der Sternen - und Balken - Methode ermittelt werden , daher muss . Die Gesamtzahl der 64-Bit-Nummern, von denen Sie versuchen würden, Ihre Nummer abzutasten, wäre offensichtlich viel höher.c=(64n)
Was Sie dann brauchen, ist eine Funktion, die Sie von einer Pseudozufallszahl im Bereich von 1 bis c zur entsprechenden 64-Bit-Kombination führen kann.k1c
Pascals Dreieck kann Ihnen dabei helfen, da der Wert jedes Knotens genau die Anzahl der Pfade von diesem Knoten zur Wurzel des Dreiecks darstellt und jeder Pfad eine der Zeichenfolgen darstellen kann, nach denen Sie suchen, wenn alle Linksabbiegungen vorhanden sind Beschriftet mit einer und bei jeder Rechtskurve mit einer 0 .10
Also sei die Anzahl der noch zu bestimmenden Bits und y die Anzahl der noch zu verwendenden Bits .xy
Wir wissen, dass , und wir können es verwenden, um das nächste Bit der Zahl bei jedem Schritt richtig zu bestimmen:(xy)=(x−1y)+(x−1y−1)
whilex>0
ifx>y
ifk>(x−1y):s←s+"1",k←k−(x−1y),y←y−1
else:s←s+"0"
else:s←s+"1",y←y−1
x←x−1