001 package de.hska.java.aufgaben.felder;
002
003 /**
004 * Dient zum Erzeugen von zufälligen Namen bestehende
005 * aus Vor- und Nachname.
006 * <p>
007 * <a href="http://www.home.hs-karlsruhe.de/~pach0003/informatik_1/aufgaben/felder.html#zufallsnamen_erzeugen">Zurück zum Aufgabentext</a>
008 * </p>
009 *
010 * @author Christian Pape
011 */
012 public class ZufallsnamenGenerator {
013
014 /**
015 * Liste männlicher und weiblicher Vornamen ohne
016 * Doppelnamen wie "Josef Helmut".
017 * Die Namen sind aus der deutschen Wikipedia entnommen.
018 * vornamen[0] enthält die männlichen Vornamen.
019 * vornamen[1] enthält die weiblichen Vornamen.
020 */
021 private static String vornamen [] [] = {
022 { "Aaron",
023 "Adalbert",
024 "Adam",
025 "Adolf",
026 "Adrian",
027 "Adriano",
028 "Ahmad",
029 "Albrecht",
030 "Aldhelm",
031 "Alexander",
032 "Alfred",
033 "Ali",
034 "Alois",
035 "Alwin",
036 "Amadeus",
037 "Amos",
038 "Anastasius",
039 "Anders",
040 "Andre",
041 "Andrea",
042 "Andreas",
043 "Andres",
044 "Andrew",
045 "Andrzej",
046 "André",
047 "Anselm",
048 "Ansgar",
049 "Anton",
050 "Antonius",
051 "Archibald",
052 "Aribert",
053 "Armin",
054 "Arndt",
055 "Arne",
056 "Arnim",
057 "Arno",
058 "Arnold",
059 "Arnulf",
060 "Aron",
061 "Arthur",
062 "Artur",
063 "Arved",
064 "Asmus",
065 "Attila",
066 "August",
067 "Augustin",
068 "Axel",
069 "Balduin",
070 "Baldur",
071 "Balthasar",
072 "Baptist",
073 "Barnabas",
074 "Bartholom",
075 "Bastian",
076 "Beat",
077 "Benedikt",
078 "Benjamin",
079 "Benno",
080 "Benutzer",
081 "Bernd",
082 "Bernhard",
083 "Berno",
084 "Bert",
085 "Berthold",
086 "Bertram",
087 "Birger",
088 "Björn",
089 "Blasius",
090 "Bogdan",
091 "Boleslaw",
092 "Bonifatius",
093 "Boris",
094 "Brian",
095 "Burckhardt",
096 "Burkhardt",
097 "Béla",
098 "Caesar",
099 "Calvin",
100 "Can",
101 "Candid",
102 "Carl",
103 "Carlos",
104 "Carsten",
105 "Charles",
106 "Charlie",
107 "Charly",
108 "Chlodwig",
109 "Chlothar",
110 "Christian",
111 "Christoph",
112 "Christopher",
113 "Clyde",
114 "Conan",
115 "Cornelius",
116 "Corvin",
117 "Cosimo",
118 "Crispian",
119 "Dagobert",
120 "Damian",
121 "Daniel",
122 "Dario",
123 "David",
124 "Dedo",
125 "Denes",
126 "Dennis",
127 "Dietmar",
128 "Dietrich",
129 "Dimitrij",
130 "Dirk",
131 "Djordje",
132 "Dominik",
133 "Eberhard",
134 "Eckbert",
135 "Edgar",
136 "Edmund",
137 "Eduard",
138 "Edwin",
139 "Eike",
140 "Ekkehard",
141 "Eli",
142 "Elias",
143 "Elmar",
144 "Elton",
145 "Emanuel",
146 "Emil",
147 "Enno",
148 "Enrico",
149 "Erich",
150 "Erkan",
151 "Erkmar",
152 "Ernst",
153 "Erwin",
154 "Eugen",
155 "Ewald",
156 "Fabian",
157 "Fabius",
158 "Falk",
159 "Felix",
160 "Ferdinand",
161 "Finn",
162 "Flavio",
163 "Florestan",
164 "Florian",
165 "Florin",
166 "Frank",
167 "Franz",
168 "Franz",
169 "Fred",
170 "Frederick",
171 "Fridolin",
172 "Friedemann",
173 "Friedrich",
174 "Fritz",
175 "Gabriel",
176 "Gaudenz",
177 "Gebhard",
178 "Geoffrey",
179 "Georg",
180 "Gerhard",
181 "Gernot",
182 "Gerold",
183 "Gilbert",
184 "Gotthard",
185 "Grant",
186 "Gregor",
187 "Grischa",
188 "Guido",
189 "Gundo",
190 "Gunnar",
191 "Gunther",
192 "Guntram",
193 "Gustav",
194 "Götz",
195 "Günther",
196 "Hadmar",
197 "Hadrian",
198 "Hans",
199 "Harald",
200 "Harro",
201 "Hartmut",
202 "Hartwin",
203 "Hauke",
204 "Heinrich",
205 "Helmut",
206 "Henning",
207 "Herbert",
208 "Heribert",
209 "Hermann",
210 "Heron",
211 "Holger",
212 "Horst",
213 "Hubert",
214 "Hugo",
215 "Igor",
216 "Ilja",
217 "Immanuel",
218 "Inga",
219 "Ingmar",
220 "Ingo",
221 "Ira",
222 "Isaak",
223 "Ivo",
224 "Jakob",
225 "James",
226 "Jan",
227 "Jari",
228 "Jehoschua",
229 "Jesko",
230 "Jesus",
231 "Jo",
232 "Joachim",
233 "Joah",
234 "Johann",
235 "Johannes",
236 "Jonas",
237 "Jonathan",
238 "Josef",
239 "Josua",
240 "Julian",
241 "Julier",
242 "Julius",
243 "Justus",
244 "Jógvan",
245 "Jörg",
246 "Jörn",
247 "Jürgen",
248 "Kai",
249 "Kari",
250 "Karl",
251 "Kasimir",
252 "Kaspar",
253 "Keanu",
254 "Kenneth",
255 "Kevin",
256 "Kimball",
257 "Klaus",
258 "Klemens",
259 "Knut",
260 "Koloman",
261 "Konrad",
262 "Konstantin",
263 "Korbinian",
264 "Kurt",
265 "Lamprecht",
266 "Laurentius",
267 "Lawrence",
268 "Leo",
269 "Leon",
270 "Leonhard",
271 "Leopold",
272 "Linus",
273 "Lionel",
274 "Lorenz",
275 "Loris",
276 "Lothar",
277 "Louis",
278 "Luca",
279 "Ludger",
280 "Ludwig",
281 "Lukas",
282 "Mahomet",
283 "Malte",
284 "Manfred",
285 "Manuel",
286 "Mario",
287 "Markus",
288 "Marten",
289 "Martin",
290 "Marvin",
291 "Matthias",
292 "Maximilian",
293 "Medard",
294 "Merten",
295 "Micha",
296 "Michael",
297 "Michel",
298 "Miguel",
299 "Mike",
300 "Mirko",
301 "Modestus",
302 "Mohammed",
303 "Moritz",
304 "Nando",
305 "Nathan",
306 "Nico",
307 "Nikita",
308 "Nikola",
309 "Nikolai",
310 "Nikolaus",
311 "Nils",
312 "Norbert",
313 "Odo",
314 "Olaf",
315 "Oleg",
316 "Oliver",
317 "Olivier",
318 "Oskar",
319 "Oswald",
320 "Othmar",
321 "Otto",
322 "Pascal",
323 "Patrice",
324 "Patrick",
325 "Paul",
326 "Peer",
327 "Peppone",
328 "Peter",
329 "Petrus",
330 "Philemon",
331 "Philipp",
332 "Quintus",
333 "Quirin",
334 "Radomir",
335 "Raimund",
336 "Rainer",
337 "Ralph",
338 "Raphael",
339 "Reinhard",
340 "Reinhold",
341 "René",
342 "Ricardo",
343 "Richard",
344 "Ringo",
345 "Roald",
346 "Robert",
347 "Robin",
348 "Rochus",
349 "Roland",
350 "Roy",
351 "Ruben",
352 "Rudolf",
353 "Rupert",
354 "Rupertus",
355 "Ruprecht",
356 "Rüdiger",
357 "Sachso",
358 "Salomo",
359 "Samuel",
360 "Sandy",
361 "Sascha",
362 "Sean",
363 "Sebastian",
364 "Shelly",
365 "Siegfried",
366 "Siegmund",
367 "Sigismund",
368 "Silas",
369 "Silvester",
370 "Silvio",
371 "Simon",
372 "Sjard",
373 "Stephan",
374 "Sven",
375 "Sönke",
376 "Sören",
377 "Tarik",
378 "Tassilo",
379 "Theodor",
380 "Theodosius",
381 "Thilo",
382 "Thomas",
383 "Thorbjörn",
384 "Thorsten",
385 "Thrasyvoulos",
386 "Tim",
387 "Timon",
388 "Tobias",
389 "Tom",
390 "Toni",
391 "Torben",
392 "Torger",
393 "Tristan",
394 "Udo",
395 "Ulf",
396 "Ulrich",
397 "Urs",
398 "Uwe",
399 "Valentin",
400 "Vivien",
401 "Volker",
402 "Waldemar",
403 "Walter",
404 "Warner",
405 "Wenzel",
406 "Werner",
407 "Weselius",
408 "Widukind",
409 "Wieland",
410 "Wilhelm",
411 "William",
412 "Winand",
413 "Wladimir",
414 "Wladyslaw",
415 "Wolfgang",
416 "Wolfhard",
417 "Wolfram",
418 "Xaver",
419 "Yannick",
420 "Zacharias",
421 "Zenon",
422 "Zoticus",
423 },
424
425 {
426 "Abigail",
427 "Ada",
428 "Adela",
429 "Adele",
430 "Adelgunde",
431 "Adelheid",
432 "Adelinde",
433 "Adina",
434 "Adriana",
435 "Adriane",
436 "Adrienne",
437 "Agathe",
438 "Agnes",
439 "Alberta",
440 "Alexandra",
441 "Alice",
442 "Alma",
443 "Almut",
444 "Aloisia",
445 "Alraune",
446 "Alrun",
447 "Alwine",
448 "Amalie",
449 "Amelie",
450 "Amina",
451 "Anabel",
452 "Anastasia",
453 "Andrea",
454 "Angela",
455 "Angelika",
456 "Angelina",
457 "Anita",
458 "Anja",
459 "Anka",
460 "Anke",
461 "Anna",
462 "Annegret",
463 "Anneliese",
464 "Annemarie",
465 "Annette",
466 "Annika",
467 "Annouk",
468 "Anouk",
469 "Ansgard",
470 "Antje",
471 "Antoinette",
472 "Antonia",
473 "Antonie",
474 "Apollonia",
475 "Arabella",
476 "Ariadne",
477 "Ariane",
478 "Armgard",
479 "Asgard",
480 "Asta",
481 "Astrid",
482 "Augusta",
483 "Augustine",
484 "Aurora",
485 "Ava",
486 "Babette",
487 "Barbara",
488 "Beate",
489 "Beatrice",
490 "Beatrix",
491 "Berenike",
492 "Berit",
493 "Bettina",
494 "Bianka",
495 "Birgit",
496 "Brigitte",
497 "Carina",
498 "Carmen",
499 "Carola",
500 "Carolin",
501 "Celina",
502 "Cemile",
503 "Charlotte",
504 "Christiane",
505 "Christine",
506 "Claire",
507 "Claudia",
508 "Clementine",
509 "Cora",
510 "Cordula",
511 "Corinna",
512 "Cornelia",
513 "Cosima",
514 "Cäcilia",
515 "Cäcilie",
516 "Dagmar",
517 "Dana",
518 "Daniela",
519 "Debora",
520 "Delia",
521 "Denise",
522 "Diana",
523 "Diethild",
524 "Dora",
525 "Dorothea",
526 "Edeltraud",
527 "Eleonore",
528 "Elisabeth",
529 "Elsa",
530 "Else",
531 "Emma",
532 "Esther",
533 "Eudokia",
534 "Eva",
535 "Evelyn",
536 "Fabia",
537 "Felicitas",
538 "Fenja",
539 "Fennedine",
540 "Fiona",
541 "Florence",
542 "Franziska",
543 "Frauke",
544 "Frida",
545 "Frieda",
546 "Gabriele",
547 "Genoveva",
548 "Geofreda",
549 "Georgia",
550 "Gerlinde",
551 "Gertrud",
552 "Gisela",
553 "Gunda",
554 "Gundela",
555 "Gundelinde",
556 "Hannah",
557 "Hannelore",
558 "Hedwig",
559 "Heidi",
560 "Heike",
561 "Heilgard",
562 "Helena",
563 "Helene",
564 "Helga",
565 "Helgard",
566 "Hella",
567 "Henriette",
568 "Hilde",
569 "Hildegard",
570 "Holde",
571 "Ilka",
572 "Ilona",
573 "Ilse",
574 "Inga",
575 "Ira",
576 "Irene",
577 "Iris",
578 "Irma",
579 "Irmgard",
580 "Isabella",
581 "Jana",
582 "Janina",
583 "Janine",
584 "Janna",
585 "Jeanette",
586 "Jeannette",
587 "Jelena",
588 "Jennifer",
589 "Jenny",
590 "Jessica",
591 "Jo",
592 "Joelle",
593 "Johanna",
594 "Josephine",
595 "Judith",
596 "Julia",
597 "Juliane",
598 "Jördis",
599 "Kari",
600 "Karla",
601 "Karoline",
602 "Kassandra",
603 "Keiko",
604 "Kerstin",
605 "Kira",
606 "Klara",
607 "Kriemhild",
608 "Laetitia",
609 "Larissa",
610 "Laura",
611 "Lea",
612 "Leonie",
613 "Leyla",
614 "Liane",
615 "Lilith",
616 "Lilli",
617 "Linda",
618 "Lisanne",
619 "Lucia",
620 "Luise",
621 "Lydia",
622 "Madita",
623 "Magdalena",
624 "Maike",
625 "Malwine",
626 "Mandy",
627 "Manuela",
628 "Marcella",
629 "Margarete",
630 "Maria",
631 "Marianne",
632 "Marietta",
633 "Marina",
634 "Marleen",
635 "Martha",
636 "Mathilde",
637 "Mechthild",
638 "Meike",
639 "Melanie",
640 "Meral",
641 "Mercedes",
642 "Meret",
643 "Merit",
644 "Merrit",
645 "Michaela",
646 "Milka",
647 "Miriam",
648 "Mona",
649 "Monika",
650 "Muriel",
651 "Nadia",
652 "Nadine",
653 "Nancy",
654 "Natalie",
655 "Natascha",
656 "Nefertari",
657 "Nicole",
658 "Nikola",
659 "Nina",
660 "Nora",
661 "Nyota",
662 "Olga",
663 "Olivia",
664 "Patrice",
665 "Paula",
666 "Petra",
667 "Pia",
668 "Rahel",
669 "Rebecca",
670 "Regina",
671 "Renate",
672 "Rike",
673 "Rita",
674 "Romy",
675 "Ronja",
676 "Ruth",
677 "Sabine",
678 "Sabrina",
679 "Samantha",
680 "Sandra",
681 "Sandrine",
682 "Sandy",
683 "Sarah",
684 "Sarine",
685 "Sascha",
686 "Saskia",
687 "Scholastika",
688 "Shelly",
689 "Sibylle",
690 "Sigita",
691 "Sigrid",
692 "Silvana",
693 "Silvia",
694 "Skrollan",
695 "Solveig",
696 "Solvej",
697 "Solvi",
698 "Sophia",
699 "Stella",
700 "Susanne",
701 "Synke",
702 "Tabea",
703 "Tamara",
704 "Tanja",
705 "Tatjana",
706 "Theodora",
707 "Therese",
708 "Thordis",
709 "Thurid",
710 "Tina",
711 "Tuja",
712 "Tullia",
713 "Ulrike",
714 "Ursula",
715 "Urte",
716 "Ute",
717 "Vanessa",
718 "Vera",
719 "Verena",
720 "Veronika",
721 "Viola",
722 "Virginia",
723 "Vivien",
724 "Walburga",
725 "Waltraud",
726 "Welella",
727 "Wiebke",
728 "Wilhelmine",
729 "Wilma",
730 "Wiltrud",
731 "Winifred",
732 "Xanthippe",
733 "Xaveria",
734 "Yvonne",
735 "Zita",
736 "Zoe",
737 }
738 };
739
740 /**
741 * Die Liste deutscher Nachnamen, ohne Doppelnamen wie
742 * "Meier-Müller". Die Namen stammen aus der deutschen
743 * Wikipedia.
744 */
745 private static String nachnamen [] = {
746 "Abendroth",
747 "Abraham",
748 "Abt",
749 "Adam",
750 "Albert",
751 "Albrecht",
752 "Amalie",
753 "Anders",
754 "Andres",
755 "Appel",
756 "Baumann",
757 "Becherer",
758 "Becker",
759 "Behm",
760 "Biermann",
761 "Böhm",
762 "Böll",
763 "Braun",
764 "Brühlmeier",
765 "Calvin",
766 "Christiansen",
767 "Curtius",
768 "Diederich",
769 "Dürrschnabel",
770 "Eschenburg",
771 "Falk",
772 "Fehling",
773 "Fischer",
774 "Forge",
775 "Förster",
776 "Frank",
777 "Franz",
778 "Frenzel",
779 "Freud",
780 "Freund",
781 "Friedemann",
782 "Fröhlich",
783 "Gärtner",
784 "Gerster",
785 "Glaser",
786 "Götz",
787 "Gruber",
788 "Grubner",
789 "Hackmann",
790 "Haller",
791 "Heider",
792 "Heine",
793 "Henne",
794 "Hering",
795 "Herold",
796 "Herrmann",
797 "Herzog",
798 "Hintz",
799 "Hoffmann",
800 "Honecker",
801 "Howaldt",
802 "Huber",
803 "Hünlein",
804 "Ines",
805 "Ingo",
806 "Ineichen",
807 "Jauch",
808 "Jung",
809 "Jörg",
810 "Jakobi",
811 "Kaiser",
812 "Kästner",
813 "Klaus",
814 "Knebel",
815 "Köhler",
816 "Kolmar",
817 "Körner",
818 "Kosba",
819 "Krämer",
820 "Krause",
821 "Krüger",
822 "Krupp",
823 "Kühn",
824 "Kurz",
825 "Lai",
826 "Lammers",
827 "Landgraf",
828 "Landzettel",
829 "Leber",
830 "Lehmann",
831 "Lehner",
832 "Lenz",
833 "Löchte",
834 "Lohmann",
835 "Lorenz",
836 "Lücking",
837 "Ludwig",
838 "Luhmann",
839 "Mach",
840 "Marg",
841 "Marx",
842 "Meier",
843 "Mester",
844 "Meyer",
845 "Micus",
846 "Müller",
847 "Naumann",
848 "Neumann",
849 "Nietzsche",
850 "Noack",
851 "Nordmann",
852 "Ossege",
853 "Oswald",
854 "Otto",
855 "Overbeck",
856 "Peter",
857 "Pfeiffer",
858 "Pilsak",
859 "Plagemann",
860 "Pohl",
861 "Pügner",
862 "Preuß",
863 "Quant",
864 "Querfurt",
865 "Rebahi",
866 "Reich",
867 "Resch",
868 "Richter",
869 "Rohlfs",
870 "Rumpf",
871 "Ruoff",
872 "Sam",
873 "Sander",
874 "Sauerbruch",
875 "Schäfer",
876 "Schillung",
877 "Schinder",
878 "Schleich",
879 "Schmid",
880 "Schmidt",
881 "Schmitt",
882 "Schneider",
883 "Schnorr",
884 "Schnur",
885 "Schnurr",
886 "Schnurre",
887 "Schnurrer",
888 "Scholz",
889 "Schubert",
890 "Schultheiß",
891 "Schulthess",
892 "Schröder",
893 "Schulz",
894 "Schulze",
895 "Schultz",
896 "Selbmann",
897 "Semper",
898 "Siemens",
899 "Sommer",
900 "Sommerfeld",
901 "Sonntag",
902 "Sperner",
903 "Steiner",
904 "Sygnetzki",
905 "Tannhäuser",
906 "Tenberge",
907 "Teuber",
908 "Thode",
909 "Thoma",
910 "Thomas",
911 "Thyssen",
912 "Träger",
913 "Türk",
914 "Türck",
915 "Vogt",
916 "Voigt",
917 "Voigtländer",
918 "Weber",
919 "Weck",
920 "Wenzel",
921 "Widera",
922 "Wiegand",
923 "Wieland",
924 "Wiesel",
925 "Winkler",
926 "Wittgenstein",
927 "Wolf",
928 "Wolff",
929 "Wolfram",
930 "Wölkl",
931 "Wurm",
932 "Zacharias",
933 "Zahn"
934 };
935
936
937 /**
938 * Gibt einen zufälligen Namen zurück, so daß
939 * in 50% aller Fälle ein männlicher Vorname oder weiblicher Vorname
940 * entsteht.
941 * In 10% aller Fälle entsteht ein doppelter Vorname wie "Josef Helmut",
942 * in 15% aller Fälle ein Bindestrich Nachname wie "Meier-Müller".
943 * Doppelte Vornamen oder Bindestrichnamen mit identischen Namen wie
944 * "Josef Josef" oder "Müller-Müller" entstehen nie.
945 */
946 public String getName() {
947 return getZufaelligerVorname(Math.random() <= 0.5)
948 + " " + getZufaelligerNachname();
949 }
950
951
952 /**
953 * Gibt einen zufälligen Vornamen zurück. Wenn
954 * <code>maennlich</code> true ist, wird ein männlicher
955 * Vorname zurückgegeben; ansonsten ein weiblicher.
956 * In 10% der Fälle wird ein zweiter Vorname zurückgegeben wie
957 * "Josef Helmut".
958 *
959 * @param maennlich
960 * @return einen zufälligen nännlichen oder weiblichen Vornamen
961 * mit jeweils 50% Wahrscheinlichkeit
962 */
963 private String getZufaelligerVorname(boolean maennlich) {
964 String [] vornamen = ZufallsnamenGenerator.vornamen[0];
965 String vorname = vornamen[ (int) Math.round( Math.random() * vornamen.length - 0.5) ];
966 String zweiterVorname;
967
968 if (!maennlich) {
969 vornamen = ZufallsnamenGenerator.vornamen[1];
970 }
971
972 if (Math.random() <= 0.1) {
973
974 do {
975 zweiterVorname = vornamen[ (int) Math.round( Math.random() * vornamen.length - 0.5) ];
976 } while ( vornamen.equals(zweiterVorname) );
977 vorname = vorname + " " + zweiterVorname;
978 }
979
980 return vorname;
981 }
982
983 /**
984 * Gibt einen zufälligen deutschen Nachnamen zurück.
985 * In 15% der Fälle wird ein Doppelname mit Bindestrich
986 * zurückgegeben, wie etwas "Müller-Meier". Ein Doppelname
987 * mit zwei gleichen Nachnamen wird nie zurückgegeben.
988 */
989 private String getZufaelligerNachname() {
990 String nachname = getZufaelligerNachnameOhneDoppelname();
991
992 if (Math.random() <= 0.15) {
993 String zweiterNachname;
994 do {
995 zweiterNachname = getZufaelligerNachnameOhneDoppelname();
996 } while (nachname.equals(zweiterNachname));
997
998 nachname = nachname + "-" + zweiterNachname;
999 }
1000
1001 return nachname;
1002 }
1003
1004 private String getZufaelligerNachnameOhneDoppelname() {
1005 return ZufallsnamenGenerator.nachnamen[ (int) Math.round( Math.random() * nachnamen.length - 0.5) ];
1006 }
1007
1008 }