Guter Zufallsgenerator für Java

Status
Nicht offen für weitere Antworten.
N

Nimlot

Gast
Ich bin dabei ein Pokerspiel zu programmieren. Das besondere daran ist, dass man verschiedene KI-Implementierungen über den Class-Loader dazuladen kann (also jeder kann dafür eine KI-Implementierung schreiben). Der Source-Code wird außerdem veröffentlicht.

Jetzt stellt sich mir die Frage, wie ich am besten die Karten mische. Wenn ich das mit der eingebauten Random-Funktion mache müsste jemand der die KI entwickelt ja praktisch nur den Seed rauskriegen und könnte alle Karten schon im vorraus berechnen.

Daher ist meine Frage wie ich möglichst echte Zufallszahlen generieren kann, so dass jemand der die KI entwickelt keine Chance hat, die Zahlen im Vorraus zu berechnen.
 
S

SlaterB

Gast
wie soll denn jemand den Seed herausfinden, falls du ihn erst zur Laufzeit wählst
(z.B. Systemzeit, die man strenggenommen auch modifizieren könnte,
oder Dauer des Programmstarts oder Dauer der ersten Benutzereingabe, HashCode irgendeines Objektes oder sowas,
oder Kombination von allem)

falls jemand den Programmspeicher einblicken kann, braucht derjenige gar nicht den Seed sondern schaut sich die fertigen Zufallszahlen an,

falls es dir um Vorausberechnung geht, könntest du ständig einen neuen Seed benutzen, z.B. bei jeder Benutzereingabe
 

Der Müde Joe

Top Contributor
>Jetzt stellt sich mir die Frage, wie ich am besten die Karten mische.

Collections.shuffle(List<?> list)

das Deck als List erstellen...
 

Der Müde Joe

Top Contributor
ein Deck aus 52 Karten mit allem was man braucht (also was ich bis jetzt brauchte) ;-)

Code:
package card;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Deck{

	private final int DECK_SIZE = 52;

	private final List<Card> cards;
	
	public Deck(){
		cards = new ArrayList<Card>(DECK_SIZE);	
		for(Card.Suit suit : Card.Suit.values()){
			for(Card.Rank rank : Card.Rank.values()){
				cards.add(new Card(rank, suit));
			}
		}
	}

	public void shuffleDeck(){
		Collections.shuffle(cards);
	}

	public Card deal(){
		return cards.remove(0);
	}

	public void burn(){
		cards.remove(0);
	}

//test use
	public static void main(String [] args){
		Deck d = new Deck();
		d.shuffleDeck();		

		System.out.println(d.deal());
	}
}}
 
S

SlaterB

Gast
hinsichtlich dem Vorausberechnen, was in diesem Thread damit gemeint ist,
könnt das etwas gefährlich werden, Collections.shuffle verwendet

private static Random r = new Random();

wenn man dessen seed auslesen und die Reihenfolge alle weiteren Aufrufe vorhersehen kann,
dann kann man die Zufallszahlen vorausberechnen
 

kleiner_held

Top Contributor
Man kann ein privates Random Objekt verweden, solange das KI Plugin keinen direkten Zugriff darauf bekommt laesst sich die Seed bei der geringen Menge an Zufallszahlen nicht abschaetzen.
Man muss es halt privat halten, das heisst kein static verwenden und auch keine direkte oder indirekte Referenz an die KI uebergeben wenn man dort Methoden aufruft.
Fuer Paranoiker gibts auch noch java.security.SecureRandom
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Zugriff auf protected Fields = guter Programmierstil? Java Basics - Anfänger-Themen 11
KopaCoda Getter mehrfach aufrufen -> ist das guter code? Java Basics - Anfänger-Themen 3
MiMa Guter Programmierstiel für Methoden, OOP verstoß? Java Basics - Anfänger-Themen 25
S Methoden Effiziente Permutation? Guter Permutationsalgorithmus? Java Basics - Anfänger-Themen 1
B guter Jar-Wrapper Java Basics - Anfänger-Themen 13
J Getter und Setter auch intern benutzen - guter Stil? Java Basics - Anfänger-Themen 31
U Vernünftige Strukturierung, Guter Stil,. Java Basics - Anfänger-Themen 12
K BufferedReader im Konstruktor // guter Stil ? Java Basics - Anfänger-Themen 2
G Guter Programmierstil? Java Basics - Anfänger-Themen 8
Silas89 Java in exe Compilieren (Guter Grund!) Java Basics - Anfänger-Themen 10
G Guter Programmierstil? Java Basics - Anfänger-Themen 4
G guter Parser Java Basics - Anfänger-Themen 4
G Guter Rat ist teuer Java Basics - Anfänger-Themen 6
J Guter Stil der Java-Programmierung Java Basics - Anfänger-Themen 5
G Array mit Schleife durchlaufen - guter Stil? Java Basics - Anfänger-Themen 20
K guter Programmierstil Java Basics - Anfänger-Themen 3
frau-u guter Stil - wie macht mans am Besten? Java Basics - Anfänger-Themen 8
J focusListener ...guter Code... Java Basics - Anfänger-Themen 2
T String - Zufallsgenerator Java Basics - Anfänger-Themen 12
S Zufallsgenerator für ein Quiz Java Basics - Anfänger-Themen 8
T Variablen Zufallsgenerator mit mehreren Variablen Java Basics - Anfänger-Themen 3
V Zufallsgenerator für Buchstaben Java Basics - Anfänger-Themen 22
A Zufallsgenerator Java Basics - Anfänger-Themen 7
T Zufallsgenerator Problem. Java Basics - Anfänger-Themen 3
D Zufallsgenerator Java Basics - Anfänger-Themen 10
D Zufallsgenerator für Objekte Java Basics - Anfänger-Themen 4
T Zufallsgenerator einfügen Java Basics - Anfänger-Themen 6
M Code aus IntelliJ in "Textform" für Word-Paper? Java Basics - Anfänger-Themen 2
G Icon für App Java Basics - Anfänger-Themen 1
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
V Durchschnittliche Volatility in Prozent für 4 Stunden berechnen Java Basics - Anfänger-Themen 14
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
C negamax-Algorithmus für Tic-Tac-Toe spielt manchmal falsch Java Basics - Anfänger-Themen 10
D Apache HTTPClient für alle Fälle Java Basics - Anfänger-Themen 41
J Layout Manager, welcher ist der Richtige für mein Program? Java Basics - Anfänger-Themen 1
J Fehlermeldung unverständlich für Jakarta Java Basics - Anfänger-Themen 17
M Minimax-Algorithmus für Vier gewinnt Java Basics - Anfänger-Themen 11
M GUI für Vier-Gewinnt. Java Basics - Anfänger-Themen 4
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
R Operatoren Rechenoperation verwenden für Taschenrechner. Java Basics - Anfänger-Themen 32
Ostkreuz Counter für Booleanwerte Java Basics - Anfänger-Themen 8
B Regex Ausdrücke für Monate Java Basics - Anfänger-Themen 7
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
Jxhnny.lpz Randomisier für Buttons Java Basics - Anfänger-Themen 13
W Intuitive interface für Komponenten Java Basics - Anfänger-Themen 4
M "Class<T> clazz" im Constructor - auch für int möglich? Java Basics - Anfänger-Themen 7
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Code für Bezahlsystem (auch bei Offline Aktivität) Java Basics - Anfänger-Themen 7
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
M monte carlo Algorithmus für 4 gewinnt Java Basics - Anfänger-Themen 12
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
izoards Sortier Algorithmus für Bounding Box Elememte Links nach Rechts und von Oben nach Unten Java Basics - Anfänger-Themen 33
M generate Methode für Streams Java Basics - Anfänger-Themen 6
I Datenmodell für "Tags" Java Basics - Anfänger-Themen 6
Lion.King for-Kontrollstruktur für Pyramide Java Basics - Anfänger-Themen 8
B Mit Countdown Midnestdauer für Teilaufgabenerledigung erzwingen Java Basics - Anfänger-Themen 8
J File length als Prüfwert für Download Java Basics - Anfänger-Themen 5
K Spieleidee gesucht für Informatikprojekt - JAVA (BlueJ)? Java Basics - Anfänger-Themen 15
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
javamanoman Java für Online Banking Java Basics - Anfänger-Themen 12
NadimArazi Wie kann ich eine collision detection für die Paddles in meinem Pong Programm hinzufügen? Java Basics - Anfänger-Themen 4
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
P9cman Tipps für Rekursive Aufgaben mit Strings oder allgemein Java Basics - Anfänger-Themen 2
F Suche nach betreuender Person für eine Jahresarbeit der 12. Klasse. Java Basics - Anfänger-Themen 6
I SQL / JPA Query für StartDate und EndDate Java Basics - Anfänger-Themen 1
T getMethode für ein Array Java Basics - Anfänger-Themen 2
Fats Waller Farben mixen für den Hintergrund ? Java Basics - Anfänger-Themen 1
H Suche jemanden für kleine Uni-Abgabe/ mit Vergütung Java Basics - Anfänger-Themen 1
K Für was braucht man die left und right shift operatoren? Was bringen die, also welchen Zweck haben die? Java Basics - Anfänger-Themen 15
N Api nur für Textdatein (.txt) Java Basics - Anfänger-Themen 2
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
R Ist Java das Richtige für mich? Java Basics - Anfänger-Themen 4
E Mittelquadratmethode für Hexadezimalzahlen Java Basics - Anfänger-Themen 1
P Einfacher regulärer Ausdruck (RegEx) für E-Mail-Adressen Java Basics - Anfänger-Themen 2
Kiki01 Wie würde eine geeignete Schleife aussehen, die die relative Häufigkeit für jeden Charakter in einem Text bestimmt? Java Basics - Anfänger-Themen 3
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
O Wie erstelle ich eine Instanz in einer Klasse für die ich die Instanz will? Java Basics - Anfänger-Themen 4
S BubbleSort für ArrayLists Java Basics - Anfänger-Themen 3
T Übungsbuch für Anfänger Java Basics - Anfänger-Themen 3
L Konzept für Quiz Java Basics - Anfänger-Themen 33
D Methoden Plathhalter für Integer in einer Methode Java Basics - Anfänger-Themen 19
B Datentyp für Einzelnes Objekt oder Liste Java Basics - Anfänger-Themen 9
D Welche GUI Library für eine Client Server Chat App Java Basics - Anfänger-Themen 14
T Algorithmus für Index mit min-Wert Java Basics - Anfänger-Themen 2
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
L loop für Namen Java Basics - Anfänger-Themen 11
kxrdelis Konstruktor für ein Rechtwinkliges Dreieck Java Basics - Anfänger-Themen 10
S Fehler bei Code mit SubStrings für mich nicht auffindbar. Java Basics - Anfänger-Themen 4
nevel Programm für die Summer der Zahlen 1- 1ß Java Basics - Anfänger-Themen 12
I Entity erstellen, die für API gedacht ist Java Basics - Anfänger-Themen 33
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
A Junit Test für MysqlDataSource JDBC Java Basics - Anfänger-Themen 3
Animal-Mother BMI Rechner erstellen für W/M Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben