Update of exercises
parent
a3c41721e6
commit
2015d67179
Binary file not shown.
|
After Width: | Height: | Size: 2.4 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
|
|
@ -0,0 +1,74 @@
|
|||
# Ein Traum in Zucker oder kann ich dem Zufallsgenerator trauen?
|
||||
|
||||
**🎓 Benotetes Assignment 🎓**
|
||||
|
||||
📆 **Fällig: 18.11.2025** 📆
|
||||
|
||||
Ihr Auftritt in der Spieleindustrie war ein voller Erfolg: Racewars hat die Steam-Charts gestürmt und der Einfluss ist so groß, dass Rockstar Games den Launch von GTA VI um sechs Monate verschoben hat, um nicht in Konkurrenz zu Ihrem Spiel zu treten.
|
||||
|
||||
Während einer Promo-Tour für Ihr Spiel reisen Sie auch durch die USA und stellen in San Francisco dessen tolle Features vor. Dort werden Sie von Mark Zuckerberg angesprochen und zu einer Party am Abend eingeladen. Natürlich nehmen Sie die Einladung an und feiern dort heftig ab.
|
||||
|
||||
<img src="img/zuck.jpg" width="150" alt="Mark Zuckerberg">
|
||||
|
||||
Plötzlich wird Ihnen schwindelig und Sie brechen noch auf der Party vor den Augen von Mark zusammen. War da etwas in Ihrem Drink? Hätten Sie den vielleicht besser nicht unbeaufsichtigt von Mark Zuckerberg halten lassen, während Sie auf der Tanzfläche waren?
|
||||
|
||||
Als Sie wieder aufwachen, befinden Sie sich in einer dunklen Höhle, wahrscheinlich viele Meter unter der Erdoberfläche. Es ist feucht und tropft von der Decke, es stinkt nach Meta-Schimmel. Vor Ihnen stehen zwei Echsen, wahrscheinliche Reptiolide oder andere Außerirdische, die sich in den Höhlen unter der Erdoberfläche verstecken. Sie hatten schon immer das Gefühl, das mit Mark Zuckerberg etwas nicht stimmt; jetzt haben Sie den Beweis.
|
||||
|
||||
<img src="img/reptilien.png" width="260" alt="Reptiloide (KI-generiert)">
|
||||
|
||||
Die Echsen haben Sie nicht ohne Grund entführt; sie wollen Ihre hervorragenden Programmierkenntnisse nutzen. Das war ja klar! Die Echsen wollen in Zukunft ihre Daten besser verschlüsseln und haben zu diesem Zweck von der Firma Natlose Sicherheitsapplikationen (NSA) zwei Zufallszahlengeneratoren gekauft. Die Echsen haben allerdings den Verdacht, dass da etwas nicht stimmen könnte und da Sie so gut programmieren können, sollen Sie den Echsen helfen.
|
||||
|
||||
Sie bekommen von den Echsen zwei Zufallszahlengeneratoren mit den Namen `SecRandomGenerator` und `SuperSecRandomGenerator`.
|
||||
|
||||
* [SecRandomGenerator](../sources/src/main/java/pr2/algorithmen/random/SecRandomGenerator.java)
|
||||
* [SuperSecRandomGenerator](../sources/src/main/java/pr2/algorithmen/random/SuperSecRandomGenerator.java)
|
||||
|
||||
Jetzt ist Ihr Interesse geweckt. Sie öffnen Ihren Editor und fangen an, die Frage, ob die Klassen wirklich zufällige Zahlen liefert, zu untersuchen.
|
||||
|
||||
**Ziel**: Ziel dieses Assignments ist es, die Verteilung von Daten über ein Bild zu visualisieren.
|
||||
|
||||
## Paket
|
||||
|
||||
Gehen Sie in das Paket [pr2.algorithmen.random](../sources/src/main/java/pr2/algorithmen/random).
|
||||
|
||||
## Zufall zeichnen
|
||||
|
||||
### Beschreibung des Programms
|
||||
|
||||
Sie sollen zeigen, ob die von `SecRandomGenerator` und `SuperSecRandomGenerator` generierten Zahlen wirklich vollkommen zufällig sind. Um die Mühe eines mathematischen Beweises zu sparen, wählen Sie einen grafischen Ansatz und stellen die Ausgaben als Bild dar.
|
||||
|
||||
Um Ihren Ansatz zu testen, benutzen Sie zuerst den in Java eingebauten Zufallszahlengenerator der Klasse `Random`. Hierzu implementieren Sie das Interface [RandomGenerator](../sources/src/main/java/pr2/algorithmen/random/RandomGenerator.java) mit der Klasse [StandardRandomGenerator](../sources/src/main/java/pr2/algorithmen/random/StandardRandomGenerator.java) und greifen darin auf den bei Java eingebauten Zufallszahlengenerator aus `java.util.Random` zurück.
|
||||
|
||||
Schreiben Sie ein kleines Java-Programm, das die erzeugten Zufallszahlen als PNG-Bild darstellt:
|
||||
|
||||
* Machen Sie die Abmessungen des Bildes im Programm über Konstanten einstellbar.
|
||||
* Legen Sie die Größe auf 100x100 Pixeln fest.
|
||||
* Berechnen Sie viele Zufallszahlen zwischen 0 und der Anzahl der Pixel - 1.
|
||||
* Färben Sie die Pixel entsprechend der Häufigkeit der Zufallszahlen mit dem jeweiligen Grau-Wert ein.
|
||||
* Das Bild soll ein Graustufenbild im PNG-Format sein.
|
||||
* Die Farbe jedes Pixel entspricht der Häufigkeit, dass die Zahl gezogen wurde. Je häufiger, desto heller.
|
||||
|
||||
**Hinweis**: Um ein aussagekräftiges Bild zu bekommen, müssen Sie sehr viele Zufallszahlen erzeugen. Da es nur 255 Graustufen gibt, Sie aber mehr Werte haben, müssen Sie die Häufigkeit der gezogenen Zahlen auf die Graustufenskala mappen.
|
||||
|
||||
Für die einfache Erzeugung von PNG-Bilder in Java bietet es sich an, auf die Klasse `java.awt.image.BufferedImage` zurückzugreifen. Das Speichern erfolgt über die `write`-Methode in `javax.imageio.ImageIO`. Da die Klasse `BufferedImage` die Farben als RGB-Werte bekommt, müssen Sie die Graustufen entsprechend auf die drei Bytes verteilen. Aus dem Graustufenwert `0xAB` wird dann z.B. `0xABABAB`.
|
||||
|
||||
Speichern Sie das Bild in einer Datei `standard_random.png` ab.
|
||||
|
||||
Nachdem Sie ein Bild mit Javas Zufallszahlengenerator erzeugt haben, erzeugen Sie ein weiteres Bild mit dem Generator `SecRandomGenerator`, der Ihnen zugeschickt wurde. Speichern Sie dieses Bild in einer Datei `secure_random.png` ab.
|
||||
|
||||
Jetzt führen Sie denselben Vorgang noch einmal mit dem gegebenen `SuperSecRandomGenerator` durch und speichern das Bild als `super_secure_random.png` ab.
|
||||
|
||||
Vergleichen Sie die drei Bilder. Was fällt Ihnen auf?
|
||||
|
||||
|
||||
## Abgabe
|
||||
|
||||
Alle Abgaben für die Vorlesung erfolgen über `git`.
|
||||
|
||||
Hierzu gehen Sie wie folgt vor:
|
||||
|
||||
1. Öffnen Sie eine Kommandozeile (Terminal).
|
||||
2. Gehen Sie in Ihr Working Directory.
|
||||
3. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
|
||||
4. Wenn Sie Meldung "✅ Projekt gebaut" bekommen, checken Sie Ihre Änderungen in `git` **auf der Kommandozeile** ein (comitten), d.h. mit `git add` und `git commit`. Verwenden Sie **nicht** Eclipse für diesen Schritt.
|
||||
5. Rufen Sie mit `bin/submit.sh` erneut das Skript auf. Wenn alles klappt, bekommen Sie die Anzeige "✅ Aktuelle Lösungen eingereicht" und Ihre Lösung ist im System angekommen.
|
||||
29
readme.md
29
readme.md
|
|
@ -19,12 +19,12 @@ Die folgende Tabelle zeigt Ihnen die Themen der Woche und welche Kapitel Sie bis
|
|||
| 6 | Wer sortiert, muss trotzdem suchen | Suchen, Sortieren, Regex | [6][6] | | **27.10** |
|
||||
| 7 | Geschenkverpackungen und andere Feinheiten | Object, Wrapper, Optional, Enums, Records | [7][7], [8][8] | [1][ob_001], [2][ob_002], [3][ob_003], [4][ob_004], [5][ob_005], [6][ob_006], [7][ob_007], [8][en_001], [9][en_002], [10][en_003], [11][en_004] | **03.11** |
|
||||
| 8 | Wenn es mal schief geht, Ausnahmen | Exceptions, try, catch | [9][9] | [1][as_001], [2][as_002], [3][as_003], [4][as_004], [5][as_005] | **10.11** |
|
||||
| 10 | Rein oder raus, die Daten müssen fließen | Input/Output mit Streams und Reader/Writer | [10][10] | [1][io_001], [2][io_002], [3][io_003], [4][io_004], [5][io_005], [6][io_006], [7][io_007], [8][io_008], [9][io_009], [10][io_010], [11][io_011], [12][io_012], [13][io_013], [14][io_014], [15][io_015], [16][io_016] | **17.11** |
|
||||
| 11 | One size fits all, mit generischen Typen | Generische Typen, Wildcards | [11][11] | [1][ge_001], [2][ge_002], [3][ge_003], [4][ge_004], [5][ge_005], [6][ge_006], [7][ge_007], [8][ge_008], [9][ge_009] | **24.11** |
|
||||
| 12 | Matroschka-Klassen | Geschachtelte Klassen, Lambdas | [12][12] | [1][gk_001], [2][gk_002], [3][gk_003], [4][la_001], [5][la_002] | **01.12** |
|
||||
| 13 | Daten brauchen Struktur | Abstrakte Datentypen | [13][13] | | **08.12** |
|
||||
| 14 | Objekte sammeln | Collections und Streams | [14][14], [15][15] | [1][co_001], [2][co_002], [3][co_003], [4][co_004], [5][co_005], [6][co_006], [7][co_007], [8][co_008], [9][co_009], [10][co_010], [11][co_011] | **15.12** |
|
||||
| 15 | Parallel läuft es schneller | Threads, Probleme der Thread-Programmierung | [16][16] | [1][th_001], [2][th_002], [3][th_003], [4][th_004], [5][th_005], [6][th_006], [7][th_007], [8][th_008] | **07.01** |
|
||||
| 9 | Rein oder raus, die Daten müssen fließen | Input/Output mit Streams und Reader/Writer | [10][10] | [1][io_001], [2][io_002], [3][io_003], [4][io_004], [5][io_005], [6][io_006], [7][io_007], [8][io_008], [9][io_009], [10][io_010], [11][io_011], [12][io_012], [13][io_013], [14][io_014], [15][io_015], [16][io_016] | **17.11** |
|
||||
| 10 | One size fits all, mit generischen Typen | Generische Typen, Wildcards | [11][11] | [1][ge_001], [2][ge_002], [3][ge_003], [4][ge_004], [5][ge_005], [6][ge_006], [7][ge_007], [8][ge_008], [9][ge_009] | **24.11** |
|
||||
| 11 | Matroschka-Klassen | Geschachtelte Klassen, Lambdas | [12][12] | [1][gk_001], [2][gk_002], [3][gk_003], [4][la_001], [5][la_002] | **01.12** |
|
||||
| 12 | Daten brauchen Struktur | Abstrakte Datentypen | [13][13] | | **08.12** |
|
||||
| 13 | Objekte sammeln | Collections und Streams | [14][14], [15][15] | [1][co_001], [2][co_002], [3][co_003], [4][co_004], [5][co_005], [6][co_006], [7][co_007], [8][co_008], [9][co_009], [10][co_010], [11][co_011] | **15.12** |
|
||||
| 14 | Parallel läuft es schneller | Threads, Probleme der Thread-Programmierung | [16][16] | [1][th_001], [2][th_002], [3][th_003], [4][th_004], [5][th_005], [6][th_006], [7][th_007], [8][th_008] | **07.01** |
|
||||
|
||||
¹ = Wird als aus PR1 bekannt vorausgesetzt
|
||||
|
||||
|
|
@ -163,14 +163,15 @@ Hinweise zur nötigen Softwareausstattung finden Sie [hier](help/softwareausstat
|
|||
|
||||
Wichtige Einstellungen für Eclipse sind [hier](help/eclipse.md) beschrieben.
|
||||
|
||||
| # | Ausgabe | Thema | Fällig am 📆 |
|
||||
|-----|------------|---------------------------------------------------------------------|----------------|
|
||||
| 1. | 23.09.2025 | [Umgebung aufsetzen](Assignment_001/readme.md) | **01.10.2025** |
|
||||
| 2. | 23.09.2025 | [Erster Commit](Assignment_002/readme.md) | **01.10.2025** |
|
||||
| 3. | 01.10.2025 | [Stein, Papier, Schere (, Echse, Spock)](Assignment_003/readme.md) | **07.10.2025** |
|
||||
| 4. | 08.10.2025 | [Vektor](Assignment_004/readme.md) | **21.10.2025** |
|
||||
| 5. | 22.10.2025 | [Live-Testat](Assignment_005/readme.md) | **29.10.2025** |
|
||||
| 6. | 22.10.2025 | [Racewars](Assignment_006/readme.md) | **04.11.2025** |
|
||||
| # | Ausgabe | Thema | Fällig am 📆 |
|
||||
|-----|------------|---------------------------------------------------------------------------------------------|----------------|
|
||||
| 1. | 23.09.2025 | [Umgebung aufsetzen](Assignment_001/readme.md) | **01.10.2025** |
|
||||
| 2. | 23.09.2025 | [Erster Commit](Assignment_002/readme.md) | **01.10.2025** |
|
||||
| 3. | 01.10.2025 | [Stein, Papier, Schere (, Echse, Spock)](Assignment_003/readme.md) | **07.10.2025** |
|
||||
| 4. | 08.10.2025 | [Vektor](Assignment_004/readme.md) | **21.10.2025** |
|
||||
| 5. | 22.10.2025 | [Live-Testat](Assignment_005/readme.md) | **29.10.2025** |
|
||||
| 6. | 22.10.2025 | [Racewars](Assignment_006/readme.md) | **04.11.2025** |
|
||||
| 7. | 05.11.2025 | [Ein Traum in Zucker oder kann ich dem Zufallsgenerator trauen?](Assignment_007/readme.md) | **18.11.2025** |
|
||||
## 😀 Freiwillige Übungen
|
||||
|
||||
Die freiwilligen Übungen zur Vertiefung der Vorlesungsinhalte finden Sie in einem getrennten Repository: [Freiwillige Übungen](/pr2-lecture/uebungen/src/branch/master/readme.md).
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
package pr2.algorithmen.random;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* Testet die verschiedenen Zufallszahlengeneratoren dadurch,
|
||||
* dass ihre Verteilung geplottet wird.
|
||||
*/
|
||||
public class DrawRandom {
|
||||
|
||||
private static final int WIDTH = 100;
|
||||
private static final int HEIGHT = 100;
|
||||
private static final int ROUNDS = 1000000;
|
||||
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package pr2.algorithmen.random;
|
||||
|
||||
/**
|
||||
* Interface for all random number generators.
|
||||
*/
|
||||
public interface RandomGenerator {
|
||||
|
||||
/**
|
||||
* Generate a new random number between 0 and max (excluded).
|
||||
*
|
||||
* @param max the maximum value (excluding) to be generated
|
||||
* @return a random number between 0 and max (exclusive)
|
||||
*/
|
||||
int rand(int max);
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
package pr2.algorithmen.random;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* Psst...
|
||||
* Super secure and mathematically correct random number generator
|
||||
*
|
||||
* @author NSA
|
||||
*/
|
||||
public class SecRandomGenerator implements RandomGenerator {
|
||||
|
||||
private final Random rnd;
|
||||
|
||||
/**
|
||||
* Create a new instance.
|
||||
*/
|
||||
public SecRandomGenerator() {
|
||||
rnd = new Random();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see RandomGenerator
|
||||
*/
|
||||
@Override
|
||||
public int rand(int max) {
|
||||
// increase randomness by taking two random numbers
|
||||
// and calculating the average
|
||||
int a = rnd.nextInt(max);
|
||||
int b = rnd.nextInt(max);
|
||||
return (a + b) / 2;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
package pr2.algorithmen.random;
|
||||
|
||||
|
||||
public class StandardRandomGenerator {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,178 @@
|
|||
package pr2.algorithmen.random;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* Psst...
|
||||
* Even better super secure and mathematically correct random number generator
|
||||
*
|
||||
* @author NSA
|
||||
*/
|
||||
public class SuperSecRandomGenerator implements RandomGenerator {
|
||||
|
||||
private static final String SEED = """
|
||||
3333442547696=GAF8578AE;33689?DGECDDDA;:8852222212135466:BK\\djhaQJHF?>DEHHHHHHHH
|
||||
IJKKMNLMLLLLMNNNNOOO343222275>9986FGBA9438@@<5269;=@DEEFHGCA<865422365333458@FRd
|
||||
ijiicSOJ?=<DJJKKKKJJJJKKKJKLKLKLLMNNOONN333344699A>9849IDA?8648<;:;:668:99<?>=98
|
||||
8967547;2223479@GO[gkjkijeXSG;7<DJLKKMLLKKKKKKJKKLKLLMNNOOON3533337:@BE?:55>FE?;
|
||||
7517<779997688879987<?A@=>>@443358?GL]ckjkijihbXM>8BFJMLLMLKLLLLLLKLKKLLMNNNOOON
|
||||
4563435:CHJGA578DBG<66433589:75567;@<?AFHLDFGDH?54567;EPXgjnljljjjhaSA:BJJKLKLLL
|
||||
MMMMMMLLLMLMMNOONOOO33762326=KNIC=65@?>B@:644455689;=>=AFLOTREOKJCO<657:>CM`glol
|
||||
mjjkjije[D69IJKKKKLLMMMMMMMMMMMMMNNNNOOO343<52346JLKB==2@??;;??=;;>@AC?88ALLMNQK
|
||||
LSNRGOI5558?DJXiopqmnmjjhijhcN=5EJKKKLLLMMMMMMMMMMMMNNNNNOOO433773422ALLF:<86C;;
|
||||
758:==<<;9=@CDDHLNIPTRUOGS;457:DKTfmqqpmllijjikifV>:@JKKLLLLMMMMMMMMMMMMNONNNOOO
|
||||
8:34433348DNKC9848B88553369:;<=@?@EHIELOMQPFOC5459=IS_mmqqpnmljjijjkh_A8@JJJKKLM
|
||||
MMNMMMMMMMMMNNNOOOOO4;;5244438@DMI?88588655788:;<?@>;?FHGHHDFJJD=;467=AP[hnoqppn
|
||||
nkjjjjjjjfG8@JJJJKLMNNNMMNNNNNMNOOOOOOOO4279344545?AEGH@5424467877::::89;CEBFDB?
|
||||
AHA>8:8:=BIZelnooooonljjijijjhZ6@KKJKKLMNNNMMNNOONNNOOOOOOOO3529774554:DAAEIB;40
|
||||
2245689;;===A>?BA=<=@A;:>:AADISdlomlmnoomjhhhjjjjhd?ELLKKKLMMMMMMNNOONNNOOOOOOOO
|
||||
34247886666AB??BFE>73212333588:?>>?=5;?<A=;BCBFHNQailnnmklnnmlkjijjjjjeUELLLLKKL
|
||||
LLLMMMNNONNOOONOOPOO333348987679A>A::=954433445669===<;8:><A@@CFJLMPVZfknonnmmll
|
||||
mlllikkkjiiaGLKKLJGDA?=ADIJJLKJJGEFIFFLO334334898676>D@?=785443334469<=<99;;?>CC
|
||||
FJMPSVUY\\`imnnnoonmnnmmllljjjjhf\\FCA><??889<>???@>>??AA@@?AF3333442987666;AA;=86
|
||||
44444568;:8667:=@DJKRXZ]^``adgjknooponmmmllmlljijjhfdA8::=?@9356=?>?@>@C@>?>?>?@
|
||||
433334349;77459==;976655566;9777:;AGHOVXY\\abddeehijllnlnoommnnnmkkljhjhihS9::???
|
||||
;356;>>?@AA<A?=B>=994333334458986558;<9665456777778=AEKORUXZ]bddefghjkjjlmlmnnno
|
||||
pppnmkkjiijiicA9<=?B<5349;>@><<=?<;>=98;44433333446896557898766776678;@DHMPSUW[^
|
||||
adfgghjkkkkjllmnooooppomlkjiifhfb_L;AA@D;634;==@>=:;;9;=>8:;33444444545798665567
|
||||
6555678:<AFILORUUX]`befhijkkkijillnnpopponmlkkihgda]YZSAB;??;7348;?<;::9789;<9::
|
||||
43334455554458786567666789;=AFIKOQSTVY]_cdffhjjjkklmnmnnmlmnlmllkjhhd]TUV]^HA?@@
|
||||
;62469=99737588<9;9;344444455443465886566889:;>BFKNNOQRRUX[]bdgfgijlmmnonmlllkkk
|
||||
klkkigfaXQSW^ceZ<=A>;83689=986487988:>;;34455555554554466779:<=>>ADGJMOQPQQQVX\\`
|
||||
deeeghknnnnoomkjiihhjjhgfecYOOX_`bfgD<A==52579;9864768:8<><=4445556555555444569=
|
||||
>ABDEGJMNPPQQQRRVX^ceffgghkmoooonmkihgfghhfec\\PJNWZTU^hkU;>:<6356:6666345679:>>?
|
||||
4455566654444455568<?DFHIJLOPQRQQPRUW\\abdffgfhijnnnnmmjhgfeffdc_SJGKNB@IP[ikh?;<
|
||||
;7345;433435768;9=;?5444656665454444369;@FHIJJMNQRRRQQTUX[`bdeffhhjjlmmmmljigfde
|
||||
fd`ULLM?8>NOYdjjmQ8::764475565356568::>?7455446666555444467;AFHJJJLOPQSSSQTTX\\ab
|
||||
deffhijiklllkjiigfcccbZOLG766?_`ckmnmb:;7565355676665689<;;A@866466777655545545;
|
||||
AFIJLLLNOQRSSRRUX\\accdeghiihihhihhghggdaa^TNMG?>FKjcimnollA;824445466556566<:;A@
|
||||
FI=6666777655554455:?EHKMMMMOPQSSRTVWY^`bdefghgfggggeffgegeb_ZQNJUWJRjhhkmnnnlU8
|
||||
725533446556688;;??;HJL88678876645465569?DIMMMNNNOQSSSSUWZ]`cccdeffeeebabcefece`
|
||||
\\VRNKS_dggiilonnmn^782474444544667<;>?;=JJS@;678877666465678?EIMLMNOMNPSTUUVX[^a
|
||||
ccbbaba`_]\\YY\\^adbdc_[VSS[bdefjklnnnnmf86546445443487;>=?=B@IKQM:767777666554467
|
||||
?EHLLMMONNPRTVWXYZ^_`cba_]\\\\XTSRRTTX_aeheb^cda`ddhlnmnnnnmj?7646554466677<CB><?<
|
||||
JLRV@976787665555669@CFJLMMNONOQRTVXZ[\\\\]^\\YYXTQOLKJLOQSX`flmkefgeefgjknnnmnnlkM
|
||||
965565457788:;<A==;9LKSWK:6867766655456:=@CIKKMLMNNOQSTVXZYXXYWROMIEGGGIJJLNS_el
|
||||
pmjijkhfhghlnnnnlkiY5756644787998@?B@=;6MLPXV=76687666566568:>CHJMMMMNNNPQSTVWTR
|
||||
SQLHEDEGJLJHHGIJMWcjpqjjillklllmnnmlkjj]87865668779:?ACAA;8;LLPVYE86889776676667
|
||||
9<BFIMMNMMMMOORSUSNMNIFIKJQNLIJLIECEIO\\elqljhiijmooooomllkja=<<:767767>??=B=;:;;
|
||||
KJNUZR;86687888866667;AFJMMNONMMMNOQQIFJLLNQUUF=@BDLSOEEGJSaflpkihhjmnoppmlllkic
|
||||
?=>=87969;<<;=<==?>EJIOTWI:766787888777568@GJMMMMNNMMLMIHGIOPVVTM>8GWICMSNKJJJQ[
|
||||
chomiihikmnmmmlmljjdCA?;:79::==?<;<=?@??JMOSA96777677777886559@HLMMMMMLKJJGHGINR
|
||||
UVR@637HYOUWSNQQMLOU]flqmihiikmmlkmlkjifEC==9::9;;8:;=A@>?@@JQR?8676656666788764
|
||||
59AHKLOMMMKJHEEHKOQRTM@<;A=NV]VXSUWTPLMQXbhopliiijjjkkkkjjijMBB@;88?><=@?<;>>:73
|
||||
KM;8687666666678667459@FJMMMLLLHEBGMNORRK?CSM@J[\\^^]Z\\[VSOMNS\\elrojijighijjkjiij
|
||||
R8;=>:=?;<8=;=;73479C766767666576776676468>CJMLMKKMJGFKMOPPK@?LSSTZ\\`^b`a_\\XTQPN
|
||||
PWbhopljjhdfhjjjjjjk[346779=;9;=844566577565666666667:76666568;@HMMMLJKKJKNOOQOG
|
||||
CIMQUX\\aabccba]YURPOQS\\cippjijgeggijjjjjc434457;9:715665444345555666655659977655
|
||||
779>EKMNNLLLMNOOOPNMNNOTX^^_dedccc_[VSQQQSX^djlkjjjgfeijjjjif5244446436875555444
|
||||
34555667655?IIHC?::9;88<AHMNONNNOPQOPPOQRSTWY[`effeceda]XSPOPSVZcelqkihhgdehjjjj
|
||||
h82433235674853465454444567766<NNMMKJDDA>;88>GLNONNNOPRSPQQSTUZ\\]befggffffc_YQLM
|
||||
ORU[beinnieeiifgijhig;2433446776446565534444566675BONMLMLMMKE?88=CHLNNNOPQRSRSTU
|
||||
XZ]aceegfgijige`YMLOPSTW^cfijiedljjiiiijg<2432467877656676544445566686IKFEKOJILO
|
||||
MH>8=AGJMNNOQQRSSTWZ^`accefhiiikjifbYILONPQQTYaceeekmllljijjg?243235786776464654
|
||||
4445666576FHBEKOOMONOMH;9AFJMNOPQQRSUVY]`bdeefhhhhjkjjgcXGJMLMMKLMTYYWbnlmlljjjj
|
||||
h@2332225777678856544456666565=ICBHOOPLBMMMH;>FKNOOPQPQSVWY\\^aceedfgghhiiifcWFIJ
|
||||
KKKLLKMPSYflnmlkjjiji?13222254666664865434555566556FEAFMONFBFHJPHAFKMNOOPPPRSVXZ
|
||||
[\\abddeegghhiiecVFFJKOH@@DJPVcimllkjijjkh>233223345755555744344444554549FDDONIEA
|
||||
EGHPMJHJLMMNOOPQRSUVWWZ\\^beeeefhhhebUDBHKG<EEIMQZeilkihieehhi=232222345634684657
|
||||
344444554553:EDHOFB@DGFOMLJIJMNMNOOQQQRSUSUX[_cdeeefhgeaRD@ABA@BFMOS\\djljijjZ\\eh
|
||||
f813222234475656676;44444455565647CHMGA@?BAKNNIHIKLLMMMOOOQQSSTUXZ]_bdedfed`SHDA
|
||||
B@BFJOTZ^bhkkijcS`ehb52423323336666677M_334555555555446CKIA??ACFMOLIIIJKLLMNNOPQ
|
||||
PPRSUUY\\^aacddc_ULIIHIKLMPWab`ejifaZehhhX224223334576866:Vgf3455555555555555EKHF
|
||||
FJKGBGOKFGHJJJMLMOPPPOQRSSVXZ]^``aaaZOMNNNOMNQZcfeee]TM`hiifJ33533243315AMOD]hig
|
||||
44456666665566457DJIIMQOLJMMIFFHIILLMNNNOOOPQQSSVZ\\`aaaa[ROPPOOMNQ\\ejieXMKXdhjig
|
||||
?335334448OetsrZXiii445566566666655445AHHINQSPNLHEDEHHJKLMNNOONOPPQQSWXZ]_^`ZTRQ
|
||||
PNNNOS\\adcVJMY\\bhhhe62353358MhswuwmUdfjj4556666777755555544;GIKMOPNJHA@CEHIJIKMM
|
||||
NNNNNNOOQTTV\\\\`^YUROPMMOPTSONIFR``\\aghga4352336cvuknsrgLehkk44566667777655555453
|
||||
4;GIIIIHHA<?CDGIHJKLMNNMMMNNQRRTWY\\[XUTPOONNPJGDADLX]YZbfgg\\242633auxwuga`HOhjjl
|
||||
44566667676666555424437=BDDDA>=>@ADHHHIJKMNNNMMNPQQRUWYXWURMMMMICA?@HNTWVV\\cfhiV
|
||||
22444CrqqkbMC>IFgjnm4456667767666655544334444557;>>>>?@DFGIKKLLMMMMNOQQQSTVUTRQK
|
||||
IE?;?AFJPSSQSZcfiihF3428URW^\\T?=?=?FWokm44556667776666554444334323325:>=><=ADFHI
|
||||
ILKLLLLMPOPQRRSSRPG<9:<ACFJOPPOQVagijie922C__JMPXH;=<9AJIinj44455666776666554444
|
||||
3344233335:;<;;<@EGGGIHJKKKMOOPQQQQQQMFDFDBCEGILMNOT_gklkia1>Zdec\\TQNI9:@@BDHWlj
|
||||
4445666666666555544444432233326:;;;;<ADEFGHIJKKKMNOOOQOOPNMKJJIIJKLNOQRZfjkkih_[
|
||||
hgijiijkd_D:D???@Afh44566676667555554444343333222248;;<:9;?ACDFGHIIJMNNNMOOOOOML
|
||||
KJKKKMMOPQXcjkjjjhefjkkjjjjhhl`E8@5969Tg444566766675555444433333322222269;:::8:=
|
||||
@ADDFGHIJLMMMMOOONNMKKKLNNOPQXcfgggggaimmklljljjilkL966356Aa44455666665555543442
|
||||
222222222223599:9887;@@@CDEFIJLLLLMMMMLLLLLMNMOOUaeggeddcknmjjlmlllkkklc;543445O
|
||||
344455666655554443222222222222222588887667:=>@ABFFHIIJKKKKLLLKKMLNPV^`dedbc]hnmk
|
||||
mnlnllmkjjjkM242234>444445666655554454222222222222222256666543447;=>BCDEEHHIIIJJ
|
||||
KKKMMNSV\\^__b^Wemmknolnmlmmlkjjjb<1223664445556666544555442333222222222331145544
|
||||
33322247;=@@@BACDEGIJJHIMNQTVWXYVShnmlnnmmmnmlmmjggheQ12677544456666665555555432
|
||||
22222333223332223444332221112468;==>?ABCFGHHIJKNOONOakmnnmnoonnnoonllhehd]>23443
|
||||
4545666666555544443333222223222332222333322321112111244689<=BDEEDCCBMXclnnonmnnn
|
||||
opoqqqqnmjecb\\H02243454565666655554443444332233322232222222222222111100000112344
|
||||
9<==>CUehmnmmlllnpopppqqrqqqojg^\\TJ442464445666666555555433333222332322222223322
|
||||
2222211111221121116@JPSV]gkjlmmnmmmmnpqqrqqqqqppnjg^TPH5233156556666566678543222
|
||||
222222222234132231222122211220120015<FMRW[chhijkkllmllnooqrrqrqpqoolkjg\\SJD82333
|
||||
56556666667654544322222222222232322244122222201033126=HRX\\[]^bggkkmnmlklmnooopqq
|
||||
oopoonkiiieaPG<6432256866766897556443332232222232223222632222468<==@DHLSZaggghee
|
||||
cbeiikmnmlklmnnonmnmllmmlifggdaVM=2324684666666:;57753443333233322232222224>QWZX
|
||||
Y\\`bbcehjkjikjikjifc^dhiiklmnnmnnllmlkjhghhecba`_\\TO?658<CED45665587795444444323
|
||||
34433223132238Qehhijihiijjmmnnnnmmkkjfc[_ehjjkmnnnnnnkjjhgfcaa_\\YZXVTNP[f`OEFMKO
|
||||
36568776966666543323334332234242Hdjjlllihijklnoonnllkkjhdc[\\fhjklllklnmmljhedb^Z
|
||||
WVSUSRNS^jlqmlaKMSZZ446875754766666443233333223142>]kjmmlljjkkkkjjkjjhfedaba_`^e
|
||||
ikkllkjihhhhghd^[XTRQPNOT\\elppookaSTXXRQ57877864766655654333333323354Yllmnnkllml
|
||||
mljihggeeb]YTSX_cdgjjlljiihgeddc`\\ZUROMMOP`koonlonk]YVWUXSVQ75676466566555665325
|
||||
3333324Fdnmonmkkmnnljhheca`^[WSOKINVdhjlllkhdcaaa\\YVTQNJHJQ\\ejnmlmig`VQPYWWTSTPO
|
||||
57544665555554565352433424Kflnonlkkmnmmjhb^YXYXWVQMJEFE]hjlmlif`\\[ZVTOMLGFJR]dfi
|
||||
jkigd_WMOSQQQWSLHNNQ564846554445444544353334>Xjjlnlkjknmmkge\\SQOPQQNKE?:<<\\fhkmm
|
||||
hc`URQSQLDJPX`fkjjkjea`\\QHJVQPTVVIJW^RQQ54466755454544464544448Ughklkjhjilmlid\\U
|
||||
QLD@><;621248Wfgikkic\\RJMHLU\\gmmmlkiiifd^WKCJTQJQSPNZZ\\ZZR^Z44555455554443455664
|
||||
4B_ekkjkfgijjjhd^YSO?432354778:>Pbdilkhd]REHO_kmnpomlihhgd^UH@GRMIKLMMU\\\\XYRUYZZ
|
||||
4568664455544435565?Tiahljkkeghife^WWOA75787;>?BJSZ_QU\\ehhe_SMZgmnponkjkjhd^YPB?
|
||||
FOMKKOSUS_]^WMQVY[YW445878754554445267Rlmlgijjmlfghd_XTNE>?ABCEGKR\\gihgbRSX`ecaW
|
||||
RdnnnnmjghgheQRI=;EMOLHOQLRSTXQLOQPTVVSJ44356865565555468Vfllhhcgkjgfc\\ZUPGDHJLO
|
||||
T[`eilkjjjj\\ORS\\_]VVhnmonkjkljib[J<:AHKJMONQOQMQVUSVSQSTQJA=3325565655656666>`ef
|
||||
dc[Ybefd]YVRLHLQX^chjmnnnmkkhjgTZ^^[XTTgllmlkkiiifdZH<DFIHINSSMRPSMTXWUWVSSJ?<:8
|
||||
1343455556678666;SZ^YWUUYZ[YTROT\\bgkmnnooonnmlkjih]R\\a_[UR_iijljhigc^XM?@JIFFJLN
|
||||
LQRMTQORVWWTMIA@A:<833334546878999;BDHRV]eZOMOQPWajmoonpoopppnnnmlkjhdTQYaa\\TXfg
|
||||
fgff``XSNB=FMLJLIMLLKPROUVNQTSJB=:89<89442455656<CNV^dhjjjinnmebacflooooononmnno
|
||||
nnmmmljhe]OQX`b^T]bc_`\\[UOJA9;FGHOLPKKORQSVUSULMBC<876689646355;GPYafmmnllmlmnnn
|
||||
pnmoopomnnmmlllmmmmllmlklkhdaUQWX_`ZSXYVTRNHD<75;EIOHOMKNQTSTWWRON=6665868:<8778
|
||||
TYahllmnmonnmlnoonnnonoppommmjkjkjkjlkjjiihhhgfaZORYZ_ZSMOOLD=6555:AGKQONMNOQSSU
|
||||
UVRI>:765678678<8745imjmlnqnnnlnnnppoqppnnpoomnkjljjjiijgiiihggedbb\\SLMST[XNJE=6
|
||||
3266=AIMMMLOSRQQRSRQJD968776677788:;6643mmooopnrnonnqpochrnmjgYJK?IQWZbdbeegehhf
|
||||
gcab_ZXRMFJNPSV@5358<??HMMKIHJMOUXTPMMF=76978788887868;94445RGJXacailpjTMD=7HLE?
|
||||
?A3351:2B;8:5<7;68MFHPSVWUPJCCHJOPN9:999;=::78:=@BDGILHFB<7767788778767767843689
|
||||
""".replace("\n", "").replace(" ", "");
|
||||
|
||||
|
||||
private final int[] seed;
|
||||
private final Random rnd;
|
||||
|
||||
/**
|
||||
* Create a new instance.
|
||||
*/
|
||||
public SuperSecRandomGenerator() {
|
||||
rnd = new Random();
|
||||
List<Integer> ns = new ArrayList<>();
|
||||
char[] ca = SEED.toCharArray();
|
||||
for (int i = 0; i < ca.length; i++) {
|
||||
int value = ca[i] - '0';
|
||||
for (int k = 0; k < value; k++) {
|
||||
ns.add(i);
|
||||
}
|
||||
}
|
||||
seed = new int[ns.size()];
|
||||
for (int i = 0; i < ns.size(); i++) {
|
||||
seed[i] = ns.get(i);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see RandomGenerator
|
||||
*/
|
||||
@Override
|
||||
public int rand(int max) {
|
||||
if (max == SEED.length()) {
|
||||
return seed[rnd.nextInt(seed.length)];
|
||||
}
|
||||
else {
|
||||
return rnd.nextInt(max);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue