| Autor | Nachricht |
|---|---|
| Junior Name: Voller Name als Anagramm: Fitje Weshoms Geschlecht: Fahrzeug: Yamaha YZF R6 Thundercat Anmeldedatum: 15.07.2012 Beiträge: 92 Wohnort: Amberg, Oberpfalz | zitieren Zahlenreihen richtig permutieren Wer hat sich nicht schon mal einen Zufallszahlengenerator programmiert, vielleicht für die Ausgabe von Lottozahlen? Folgende Funktion generiert Zufallszahlen von 1 bis 32767. Aber das ist nur die halbe Wahrheit, vielmehr müssen wir beim durcheinanderwirbeln von Zahlenreihen ähnlich vorgehen wie beim deutschen Samstagslotto, 6 aus 49. Nehmen wir an, wir wollen folgende einfache Zahlenreihe von 0 bis 7 permutieren, etwa zu Verschlüsselungszwecken von Bytes: Reihe vor dem 1ten Arbeitsgang: a[0] = 0; a[1] = 1; a[2] = 2; a[3] = 3; a[4] = 4; a[5] = 5; a[6] = 6; a[7] = 7; Würden wir nun einfach so acht Zahlen generieren, dann wäre es durchaus möglich, das eine Zahl mehrere Male vorkommt. Das würde unser Vorhaben, ein Byte zu verschlüsseln von vorn herein zum Scheitern bringen. Wir legen in einer Variable die Anzahl der zu generierenden Zahlen ab: Die Variable obergrenze ist 7, da Array a von 0 bis 7 reicht, also 8 Zahlen.Wie bei unserem Vorbild am Samstagslotto holen wird aus dem Lottozahlengenerator eine Zahl nach der anderen ab, wobei der restliche Haufen an Kugeln immer kleiner wird und bringen diese 8 Zahlen dann in ein neues Array Nun werden wir in einer Schleifenanweisung eine Zahl aus dem Array holen und das andere Array b damit füllen: Die Arrays nach dem 1ten Arbeitsgang: Zufallszahl = 5; obergrenze = 6; a[0] = 0; a[1] = 1; a[2] = 2; a[3] = 3; a[4] = 4; a[5] = 6; a[6] = 7; a[7] = 0; b[0] = 5; Die Arrays nach dem 2ten Arbeitsgang: Zufallszahl = 2; obergrenze = 5; a[0] = 0; a[1] = 1; a[2] = 3; a[3] = 4; a[4] = 6; a[5] = 7; a[6] = 0; a[7] = 0; b[0] = 5; b[1] = 2; Die Arrays nach dem 3ten Arbeitsgang: Zufallszahl = 5; obergrenze = 4; a[0] = 0; a[1] = 1; a[2] = 3; a[3] = 4; a[4] = 6; a[5] = 0; a[6] = 0; a[7] = 0; b[0] = 5; b[1] = 2; b[2] = 7; Die Arrays nach dem 4ten Arbeitsgang: Zufallszahl = 3; obergrenze = 3; a[0] = 0; a[1] = 1; a[2] = 3; a[3] = 6; a[4] = 0; a[5] = 0; a[6] = 0; a[7] = 0; b[0] = 5; b[1] = 2; b[2] = 7; b[3] = 3; Bei der zuletzt übrige gebliebenen Zahl diese einfach hinten ans Array b anhängen und fertig. Nun das Prinzip der Erstellung einer Permutation Nehmen wir einmal an, wir wollten die Zahlen 0 bis 9 durcheinanderwirbeln. Eine genauere Anleitung möchte ich hier nicht geben. Werte: 0,1,2,3,4,5,6,7,8,9 1. Zuerst müssen wir ein Array mit 10 Elementen deklarieren, und dann ein Array für die permutierte Zahlenreihe, und für den Schlüssel: int array[10], gecodet[10], keycode[10]; 2. Danach müssen wir den Elementen in den Arrays mit Werten füllen: for (a = 0; a <= 9; a++) array[a] = a; 3. Es folgt ein Erstellen der Reihenfolge, wie die Werte in "array" aufgestellt werden sollen: 2,4,5,8,9,0,1,6,3,7 Jene Werte werden nun in das Array keycode[10] eingelesen: keycode[0] = 2; keycode[1] = 4; keycode[2] = 5; keycode[3] = 8; keycode[4] = 9; keycode[5] = 0; keycode[6] = 1; keycode[7] = 6; keycode[8] = 3; keycode[9] = 7; also: int keycode = { 2,4,5,8,9,0,1,6,3,7 } ; Aus array[0] wird dann gecodet[2] durch die Funktion ungecodet: 0,1,2,3,4,5,6,7,8,9 Schlüsselreihe: 2,4,5,8,9,0,1,6,3,7 gecodet: 2,4,5,8,9,0,1,6,3,7 for (a = 0; a <= 9; a++) gecodet[a] = array[ keycode [a] ]; /* array = uncodierte Bytes */ Entschlüsselt wird mit: for (a = 0; a <= 9; a++) array[ keycode[a] ] = gecodet[a]; Womit die Reihe wieder entschlüsselt wird. Dabei muss beachtet werden das in der Schlüsselreihe jede Zahl nur einmal vorkommen darf. Hier gibt es folgendes zu beachten, das es nicht ausreicht mit einem Zufallszahlengenerator einfach Zahlen zu erzeugen und zu warten, bis man eine neue Reihenfolge hat. Denn je länger eine solche Permutation ist, desto länger dauert das. Ich hatte damals aber eine Möglichkeit gefunden die Zeit so zu verkürzen, das dies kein Problem darstellt. Die technische Grenze zur Erzeugung solcher Permutationen liegt bei 16384 Bits. Bei meinen Versuchen habe ich im DOS-Modus eine Zahlenreihe mit 65536 Elementen erzeugen können. Das ganze habe ich, kurz vor meinen schweren Arbeitsunfall mal schon in einem Programm namens Talarius verarbeiten können, welches ich hier schon einmal vorstellte. Nicht auf Byte-Ebene, sondern auf Bitebene arbeitet dieses Programm bei einer Verschlüsselungstiefe von 16384 Bits. Rein theoretisch könnte man sagen, es sei wie das einer Reihe von Äpfeln und Birnen. Ob b1, a1, b2, a2 oder b2,a2,b1,a1 sei egal, aber beim nächsten Satz der zu verschüsselnden Bitreihe kann das schon anders aussehen. Da ich mir damals erstens keinen Compiler für Windows leisten konnte und ich nach dem Unfall zu einer Umschulung verdonnert wurde, legte ich mein Programmiererhobby deswegen aufs Eis. In der Umschulung kam dann ein Verkehrsunfall dazu, bei dem ich als Fußgänger von hinten durch einen PKW erfasst wurde dazu. Die Folgen waren ein Felsenbeinbruch, irgendwas noch mit Otobasal, dazu wurde eines meiner Gleichgewichtsorgane zerstört und mein linkes Gehör ist jetzt weg. Jetzt liegt mein Wortverständnis selbst mit Hörgerät nur bei 50 Prozent. Da ich jetzt mit über 50 arbeitslos wurde (angeblich betriebsbedingt), kann ich ja wieder ein bisserl rumprobieren. Außerdem bin ich auf Linux umgestiegen, Windows ist mir viel zu neugierig und auf die Dauer viel zu teuer für mich als Arbeitsloser. Dazu kommt, das meiner Meinung nach Suse Linux 13.2 für Leute die behindert sind, ich habe durch die Arbeitsunfälle auch noch zwei kaputte Hände, besser geeignet ist zum Arbeiten als Windows. Vielleicht sehen andere das anders aber je nach dem. Kein Mensch ist eben wie der andere. So long, euer Guiseppe |
| ▲ | pn |
| Gast | zitieren Mach mit!Wenn Dir die Beiträge zum Thread "Zahlenreihen für Kombinatorik, Permutation und Daten-Verschlüsselung einfach herstellen" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:Registrierte Mitglieder genießen die folgenden Vorteile: ✔ kostenlose Mitgliedschaft ✔ keine Werbung ✔ direkter Austausch mit Gleichgesinnten ✔ neue Fragen stellen oder Diskussionen starten ✔ schnelle Hilfe bei Problemen ✔ Bilder und Videos hochladen ✔ und vieles mehr... |
| ▲ | |
| Ähnliche Beiträge | Re: √ | Letzter Beitrag | |
|---|---|---|---|
| C Programm um csv Datei zu erstellen/ Werte mittels Permutation angeben Hallo Zusammen,
ich möchte gerne ein C-Programm erstellen, welches eine csv Datei erstellt. Die csv Datei soll zum testen vier Spalten haben. Zudem soll eine entsprechende Permutation der Werte stattfinden.
Habe schon was erstellt- aber mir wird nicht... [C]von 01110111 | 0 673 | 28.09.2017, 14:40 01110111 | |
| PS3 Internetverbindung herstellen Mahlzeit =),
Also ich hab mir gestern ne PS3 gekauft und wollte direkt mit CODMW3 Online durchstarten und hab in den Interneteinstellungen nichts gefunden irgendwie, also sprich wenn ich auf "Internet Einstellungen" gehe und auf "... von Roneck | 0 167 | 21.07.2012, 13:11 Roneck | |
| Pflanzerde herstellen
Vielen Dank für euer Forum. Ich habe mich gerade angemeldet, gezielt, weil ich die Übernahme eines landwirtschaftlichen Betriebes in der Ukraine plane. Im Land gibt es meines Wissens keine fertige Pflanzerde und man ist auch bei der Fertigung einer... von dieter49 | 17 955 | 19.09.2016, 12:15 SCHNAUF | |
| [DIY] Rückleuchtendichtungen EJ/EK selber herstellen Hallo Maxrev :D
Da ihr sicherlich auch das Problem habt, dass sich eurem Kofferraum nach nem Regeschauer in ein Planschbecken verwandelt, liegt das entweder daran, dass die Ausgleichsklappen oder Rückleuchtendichtungen undicht sind!
Zum letzteren möchte... von EJ9_Driver | 2 780 | 27.07.2015, 20:59 kevin2310 | |
| unter xp eine lan verbindung herstellen ! wie So meine platte ist abgeraucht und ich hab mir ne neue gekauft.
Hatte nur XP und ich seh es einfach nicht ein 130 tacken für ne WIN10 Lizens abzublatzen.ich hab die auch garnicht...
Jetzt stehe ich vor dem problem, dass ich keine LAN verbindung... von Der Joe | 10 516 | 28.09.2017, 00:17 mgutt | |
| Eigene Nummernschildhalter herstellen lassen? Hi, hat einer Ahnung wo man sich eigene Nummernschildhalter machen lassen kann?
Jeder Autohändler hat ja nen eigenen Kennzeichenhalter.
Ich will aber einen, den keiner hat. Also einen den nur ich habe :D
Von Würth gibt's die Dinger. Aber bei wem... von Mattes | 8 2.270 | 10.05.2007, 19:15 ICEMAN159 | |
| AGA herstellen lassen oder lieber aftermarket? Hallo zusammen,
ich bin aktuell am überlegen, was günstiger wäre, eine AGA für meinen EG2 anfertigen lassen, oder eine schon fertige kaufen.
Anfertigen lassen hat natürlich einige Vorteile, wie Individuelles Design, Mitbestimmung bei Klang, etc. und... von Coplord | 3 335 | 09.09.2015, 14:49 corallus28 | |
| Mssql_connect () Kann keine Verbindung zum Server mit dem Remotehost vom PHP-Hosting her herstellen Ich habe Arbeit mssql Anschlusscodes und sie arbeiten in meinem anderen Unternehmen PHP-Host aber nicht funktionieren, wenn ich neue Host bewegt. Alle Codes gleichen Ich weiß nicht, warum die Verbindung von neuen Host? In neuen Host mit cpanel und php... [PHP]von jhienxle | 0 612 | 07.11.2016, 08:00 jhienxle | |
| NSR 50 Daten Moin, ich hätte gerne mal einigen Daten der Honda
also ich meine Dinge wie, Reserve? wieviel Lieter?
alle... von Mavbeatz | 1 546 | 27.09.2009, 17:22 Hypomatic | |
| MAP Daten Ich bin auf dem Thema noch nicht so fit, daher auch meine Frage. Sind die MAP Daten der D16Y7 DK identisch mit der der D16Y8 DK? Hab die Vermuntung das mein MAP Sensor kaputt ist und habe noch einen vom D16Y7 da... von Asimo1980 | 0 253 | 10.07.2013, 18:05 Asimo1980 | |