Wie rechne ich bei meinem Code, die Wahrscheinlichkeit von Fall X aus?

Fasko

Mitglied
Hallo,

wir haben den unten angegeben Code. Ich habe ein Dorf, jeder Dorfbewohner hat eine politische Einstellung. In meinem Code rot oder schwarz. Im Code wird ein zufälliger Dorfbewohner herausgesucht, dieser unterhält sich mit einem seiner NAchbarn (oben, unten, links oder rechts von ihm) und einer von beiden, bekehrt den anderen zu seiner politischen EInstellung.

Das Programm simuliert dies nun mit 40.000 Durchläufen. Jetzt möchte ich es noch so erweitern, dass ich bei jedem Schleifendurchlauf angezeigt bekomme, wie hoch die Wahrscheinlichkeit ist, ein Einparteiensystem/dorf zu erhalten.

Ich weiß nicht wie ich letzteres, also die Berechnung der Wahrscheinlichkeit im COde umsetzen soll.
Folgendes ist mein Code:

Java:
public class demokratur {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		//@Joël, wenn nicht anders erwähnt
		// .genZz(Länge der Zufallszahl) gibt eine Zufallszahl zurück
		// .resetArray(Array) Übergibt 2.DimArray Bewohner, erwartet Array mit 400 Feldern!!!
		
		//@toDos!:
		// ändere Methodennamen noch in deutsche Ableger! (bsp. get und set in hole und setze)
		// Fälle einbauen:
		// rand rechts: x+1 Verbot, rand links: x-1 Verbot; rand oben y+1 Verbot; rand unten y-1 Verbot
		// alles einzeln abfragen?
		// in fuehreGespraeche einabauen, oder vorher abfragen?
		// Idee: Werte für bestimmte Operationen mitgeben
		
	
		char[][] claEinwohner = new char[20][20];
		setUpBoxSecond cloBox = new setUpBoxSecond();
		int ilvZufallX=0;
		int ilvZufallY=0;
		int ilvXEins;
		int ilvXZwei;
		int ilvYEins;
		int ilvYZwei;
		int ilvGesamtschleifendurchlauf=0;
		
		// @param
		//Setzt das Array auf seine Startwerte
		claEinwohner = cloBox.resetArray(claEinwohner);
		
		
		for (int i=0; i<40000;i++){
		
			// such zwei Plätze aus
			// Dorfbewohner Nr.1
			ilvXEins=cloBox.genZz(19); // Höchster 19
			ilvYEins=cloBox.genZz(19); // Höchster 19
			
			
			// Übergabe an das Objekt
			//cloBox.setIlvParteiA(claEinwohner[ilvXEins][ilvYEins]); // Setzt Wert für spätere Berechnungen im Objekt
		
			
			// Führt das aktuelle Gespräch und bekehrt nach Regel
			//cloBox.waehleNachbar(ilvXEins, ilvYEins);
			cloBox.waehleNachbar(ilvXEins, ilvYEins);
			
			// Einer bekehrt jemanden
			
			ilvXZwei=cloBox.holeNachbarPosX();
			ilvYZwei=cloBox.holeNachbarPosY();
			// Kontrollausgabe, wenn gewünscht
			//System.out.println("Pos2X "+ilvXZwei);
			//System.out.println("Pos2Y "+ilvYZwei);
			
			//Übergabe von zwei Charwerten
			cloBox.fuehreGespraech(claEinwohner[ilvXEins][ilvYEins],claEinwohner[cloBox.holeNachbarPosX()][cloBox.holeNachbarPosY()]); // Führt Gespräch mit gewähltem Nachbar, Bekehrung
		
			// Hole Werte zurück
			claEinwohner[ilvXEins][ilvYEins]=cloBox.getIlvParteiA();
			claEinwohner[cloBox.holeNachbarPosX()][cloBox.holeNachbarPosY()]=cloBox.getIlvParteiB();
			// Kontrollausgabe, wenn gewünscht
			//cloBox.checkArray(claEinwohner);
			//System.out.println("Gesamtschleifendurchlauf "+i);
			ilvGesamtschleifendurchlauf=i;
		}// ende for
		System.out.println("Schleifendurchlauf: "+(ilvGesamtschleifendurchlauf+1));	
		System.out.println("Schwarz: "+cloBox.zaehleArrayEinfach(claEinwohner, 's'));
		System.out.println("Rot: "+cloBox.zaehleArrayEinfach(claEinwohner, 'r'));
		
		
		

	}

}
Java:
import java.util.*;
public class setUpBoxSecond {
	
	private char ilvParteiA;
	private char ilvParteiB;
	private char ilvParteiC;
	private int ilvXNachbar=0;
	private int ilvYNachbar=0;
	
	
	
	public int holeNachbarPosX(){
		return this.ilvXNachbar;
	}
	public int holeNachbarPosY(){
		return this.ilvYNachbar;
	}
	public char getIlvParteiA() {
		return ilvParteiA;
	}

	public void setIlvParteiA(char ilvParteiA) {
		this.ilvParteiA = ilvParteiA;
	}

	public char getIlvParteiB() {
		return ilvParteiB;
	}

	public void setIlvParteiB(char ilvParteiB) {
		this.ilvParteiB = ilvParteiB;
	}

	
	
	// Methoden!!!!
	/**
	 * führt das Gespräch
	 * bzw. hier wird bekehrt
	 * @param clvEinstellungPersonA 
	 * @param clvEinstellungPersonB
	 * @author Joël
	 */
	public void fuehreGespraech(char clvEinstellungPersonA, char clvEinstellungPersonB){
		
		
		int ilvZufallsZahl = genZz(2);
		char clvPuffer;
		
		switch(ilvZufallsZahl){
		
		case 0:
		clvPuffer = clvEinstellungPersonA;
		clvEinstellungPersonA = clvEinstellungPersonB;
		clvEinstellungPersonB=clvPuffer;
		//System.out.println("Testgespräch A");
		break;
		
		case 1:
		clvPuffer=clvEinstellungPersonB;
		clvEinstellungPersonB=clvEinstellungPersonA;
		clvEinstellungPersonA=clvPuffer;
		//System.out.println("Testgespräch B");
		break;
		
		default:
		System.out.println("ERROR in fuehreGespraeche");
		break;
		} // Ende Switch
		
		// Werte abspeichern
		this.ilvParteiA=clvEinstellungPersonA;
		this.ilvParteiB=clvEinstellungPersonB;
		
		
	}
	
	/**
	 * Einer der Nachbarn wird ausgewählt
	 * anschließend muss dieser noch bekehrt werden
	 * hierfür schreibe ich eine extra Methode
	 * Die Daten des gewählten Nachbarn werden in die lokalen Variablen der Klasse geschrieben
	 * @author Joël
	 * @param ilvX Position des Dorfbewohners auf der x-Achse
	 * @param ilvY Position des Dorfbewohners auf der y-Achse
	 * 
	 */
public void waehleNachbar(int ilvX, int ilvY){
	
	int ilvZufallsZahl = genZz(4);
		
	// Randfälle abfangen:
	// aus links mach rechts
	if (ilvX ==0 && ilvZufallsZahl ==3){
		ilvZufallsZahl=2;
		System.out.println("aus links mach rechts");
	}
	// aus rechts mach links
	else if(ilvX==19&&ilvZufallsZahl==2){
		ilvZufallsZahl=3;
		System.out.println("aus rechts mach links");
	}
	
	// Wenn Keine Änderungen nötig sind, wird einfach das übergebene intern eingespeichert
	switch(ilvZufallsZahl){
	case 2:
		// rechts
		this.ilvXNachbar=ilvX+1;
		break;
	case 3:
		// links
		this.ilvXNachbar=ilvX-1;
		break;
	default:
		this.ilvXNachbar=ilvX;
		break;
	} // rechts und links Switch
	
	//Randfälle abfangen
	// aus oben mach unten
	if (ilvY ==0 && ilvZufallsZahl ==1){
		ilvZufallsZahl=0;
		System.out.println("aus oben mach unten");
	}
	// aus unten mach oben
	else if(ilvY==19&&ilvZufallsZahl==1){
		ilvZufallsZahl=0;
		System.out.println("aus unten mach oben");
	}
	
	// Wenn Keine Änderungen nötig sind, wird  das übergebene intern eingespeichert
	switch (ilvZufallsZahl){
	case 0: 
		// oben
		this.ilvYNachbar=ilvY+1;
		
		break;
	case 1:
		// unten
		this.ilvYNachbar=ilvY-1;
		
		break;
	
	default:
		this.ilvYNachbar=ilvY;
		break;
				
	}// oben und unten Switch
	

} // Ende Metode

/**
 * @deprecated
 * @param ilvPosX
 * @param ilvPosY
 */
public void auswaehlenNachbar(int ilvX, int ilvY){
	// HIER IST IRGENDWO EIN FEHLER
		//TODO: Fehler bei den Randabfragen!

		int ilvZufallsZahl = genZz(4);
			
		
		
		// Wenn Keine Änderungen nötig sind, wird einfach das übergebene intern eingespeichert
		switch(ilvZufallsZahl){
		case 2:
			// rechts
			this.ilvXNachbar=ilvX+1;
			break;
		case 3:
			// links
			this.ilvXNachbar=ilvX-1;
			break;
		default:
			this.ilvXNachbar=ilvX;
			break;
		} // rechts und links Switch
		
		
		// Wenn Keine Änderungen nötig sind, wird  das übergebene intern eingespeichert
		switch (ilvZufallsZahl){
		case 0: 
			// oben
			this.ilvYNachbar=ilvY+1;
			
			break;
		case 1:
			// unten
			this.ilvYNachbar=ilvY-1;
			
			break;
		
		default:
			this.ilvYNachbar=ilvY;
			break;
					
		}// oben und unten Switch

	
}

	/**
	 * Nothing
	 * Entscheidet wer wen bekehrt
	 * @deprecated
	 * @author Joël
	 */
public void bekehrung(){
			
}
 /**
  *@author Joël
  * @param laenge Übergibt die Grenze, für die zufällig erstellten Zahlen 
  * @return Zufallszahl
  */
public int genZz(int laenge){ 
		
		Random iloZahlenMaschine = new Random();
		int ilvZahl = iloZahlenMaschine.nextInt(laenge); // Mind. 0 Max laenge (Array beginnt bei 0 an zu zählen)
		
		// Überprüfungscode:
		// System.out.println("LÄNGE: " + laenge);
		// System.out.println("Meine Zufallszahl: "+zahl);
		
		return ilvZahl; // übergibt zufällig generierte Zahl
	}

/**
 * Setzt das gesamte Array auf die Startwerte zurück
 * Im einfachen Fall: Eine zufällige Mischung aus schwarz und rot
 * @author Joël
 * @param ar
 * @return Gibt das Array mit den neuen Werten zurück
 */
public char[][] resetArray(char[][]ar){ //@param: setzt Array auf Startwerte zurück; noch nicht fertig!
	
	for (int y=0; y<20;y++){
		
	
		for(int x=0;x<20;x++){
			
			ar[y][x]=zufaelligeGesinnungEinfach();
			
		}// Ende for-Schleife x
	
	
	}// Ende for-Schleife y
	return ar;
	
}



/**
 * Das Array wird mit den politischen Einstellungen befüllt
 * Einfach: schwart oder rot
 * @author Joël
 * @return gibt das Array mit neuen Werten zurück
 */
	
public char zufaelligeGesinnungEinfach(){ //@param: gibt zufällige Gesinnung zurück, schwarz oder rot
	
	int ilvWelchePartei=genZz(2);
	char clvRueckgabe ='?';
	
	switch(ilvWelchePartei){
	
	case 0:
		clvRueckgabe='s';
		break;
	case 1:
		clvRueckgabe='r';
		break;
	default:
		System.out.println("ERROR in zuefaelligeGesinnungEinfach!");
		
	}//Ende-switch
	
	//Testcode
	//System.out.println(ilvWelchePartei);
	//System.out.println(clvRueckgabe);
	
	//@param
	//soll s oder r zurück geben
	return clvRueckgabe;
}
/**
 * Das Array wird mit den politischen Einstellungen befüllt
 * Komplex: schwarz, rot, grün, gelb
 * @author Joël
 * @return gibt das Array mit neuen Werten zurück
 */
public char zufaelligeGesinnungKomplex(){ //@param: gibt zufällige Gesinnung zurück, schwarz oder rot
	
	int ilvWelchePartei=genZz(2);
	char clvRueckgabe ='?';
	
	switch(ilvWelchePartei){
	
	case 0:
		clvRueckgabe='s';
		break;
	case 1:
		clvRueckgabe='r';
		break;
	default:
		System.out.println("ERROR in zuefaelligeGesinnungEinfach!");
		
	}//Ende-switch
	
	//Testcode
	//System.out.println(ilvWelchePartei);
	//System.out.println(clvRueckgabe);
	
	//@param
	//soll s oder r zurück geben
	return clvRueckgabe;
}
/**
 * Gibt den kompletten Inhalt des Arrays in der Console aus
 * @author Joël
 * @param ar
 */

public void checkArray(char[][] ar){ 
	int ilvDurchlaufzahl=0;
	for (int y=0; y<20;y++){
		
		
		for(int x=0;x<20;x++){
			ilvDurchlaufzahl++;
			System.out.println(ilvDurchlaufzahl+"<>"+ar[y][x]);
			
		}// Ende for-Schleife x
	
	
	}// Ende for-Schleife y
	
}
/**
 * Zählt den gesuchten Wert im Array
 * @param ar übergebenes Array
 * @param clvSuche
 * @return gibt die ermittelte Anzahl durch
 */
public int zaehleArrayEinfach(char[][] ar, char clvSuche){
	int count=0;
	for (int y=0; y<20;y++){
		
		for (int x=0; x<20;x++){
			if(ar[x][y]==clvSuche){
				count ++;
			}
		}
		
		
	}
	
	return count;
}


}

Ausgabe:
(...)
Schleifendurchlauf: 40000
Schwarz: 217
Rot: 183

Wobei (...) für die Wahrscheinlichkeitsrechnungen stehen soll.
Ich bin für jede Hilfe dankbar!

Gruß

Fasko

PS: Später will ich das Programm noch so erweitern, dass ich mit mehr als nur zwei Parteien starte.
 
V

vanny

Gast
Naja, ohne jetzt durch deinen Code zu rattern, würde ich erstmal den aktuellen Stand der jeweiligen Partei ermitteln.
Einparteiensystem heisst ja entweder Rot oder Schwartz.
Wie wird denn der Nachbar überzeugt? Gelingt das immer? Werden nur Nachbarn Überzeugt (also geziehlt), die einer anderen Partei angehören(sofern so ein Nachbar existiert)?
Es sind also genaue Spielregeln erforderlich um eine Wahrscheinlichkeit zu ermitteln, welche in ihrem Wert mit abnehmenden verbleibenden Durchläufen zunimmt.

Gruß Vanny

//EDIT: ok ist also absoluter Zufall, ob bekehrt wird und klappt auch immer ^^
Aufjeden Fall musst du die verbleibende Anzahl der Durchläufe berücksichtigen.
 
Zuletzt bearbeitet von einem Moderator:

Fasko

Mitglied
Ok genauer:
Wir haben ein Dorf mit 400 Einwohnern. Jeder hat eine politische Einstellung (schwarz, rot, gelb oder grün).
Im Programm wird ein zufälliger Bürger ausgesucht. Dann wird einer seiner Nachbarn ausgesucht (oben, unten, links oder rechts). Wenn die politische Einstellung beider unterschiedlich ist, wird zufällig entschieden, wer wen überzeugt.
Wie hoch ist jetzt die Wahrscheinlichkeit, dass es zu einem Einpareiensystem kommt.

Startwete:
40% Schwarz
40% Rot
15% Grün
5% Gelb

Schleifendurchläufe 50.000

Im besten Fall bekomme ich das später so hin, dass bei jedem Schleifendurchlauf die Wahrscheinlichkeit neuberechnet wird. Was bedeuten würde, dass ganze in der Schleife zu berechnen und dann entsprechend das Array dafür immer neu durchzuzählen.
Bei mir fängt das Problem schon auf dem Blatt Papier an. :rtfm::oops:

Der erste Post ist fehlerhaft, fertiger Code (mit Ausnahme der Wahrscheinlichkeitsberechnung):


Hauptklasse:
Java:
public class demokratur {
	/**
	 * @param args
	 */
	public static void main(String[] args) {

		//@Name, wenn nicht anders erwähnt
		// .genZz(Länge der Zufallszahl) gibt eine Zufallszahl zurück
		// .resetzeArray(Array) Übergibt 2.DimArray Bewohner, erwartet Array mit 400 Feldern!!!
		
		//@toDos!:
		// ändere Methodennamen noch in deutsche Ableger! (bsp. hole und setze in hole und setzeze)
		// Fälle einbauen:
		// rand rechts: x+1 Verbot, rand links: x-1 Verbot; rand oben y+1 Verbot; rand unten y-1 Verbot
		// alles einzeln abfragen?
		// in fuehreGespraeche einabauen, oder vorher abfragen?
		// Idee: Werte für bestimmte Operationen mitgeben
		
	
		char[][] claEinwohner = new char[20][20];
		setUpBoxSecond cloBox = new setUpBoxSecond();
		int ilvZufallX=0;
		int ilvZufallY=0;
		int ilvXEins;
		int ilvXZwei;
		int ilvYEins;
		int ilvYZwei;
		int ilvGesamtschleifendurchlauf=0;
		double ilvWahrscheinlichkeitsberechnung;
		
		// @param
		//setzezt das Array auf seine Startwerte
		claEinwohner = cloBox.setzeArrayZurück(claEinwohner);
		
				System.out.println("Start: ");
				System.out.println("Schleifendurchlauf: "+(ilvGesamtschleifendurchlauf+1));	
				System.out.println("Schwarz: "+cloBox.zaehleArray(claEinwohner, 's'));
				System.out.println("Rot: "+cloBox.zaehleArray(claEinwohner, 'r'));
				System.out.println("Grün: "+cloBox.zaehleArray(claEinwohner, 'g'));
				System.out.println("Gelb: "+cloBox.zaehleArray(claEinwohner, 'y'));
				//cloBox.checkArray(claEinwohner);
				
		for (int i=0; i<40000;i++){
		
			// such zwei Plätze aus
			// Dorfbewohner Nr.1
			ilvXEins=cloBox.genZz(19); // Höchster 19
			ilvYEins=cloBox.genZz(19); // Höchster 19
			
			
			// Übergabe an das Objekt
			//cloBox.setzeIlvParteiA(claEinwohner[ilvXEins][ilvYEins]); // setzezt Wert für spätere Berechnungen im Objekt
		
			
			
			//Wähle einen zufälligen Nachbarn heraus (oben, unten, links oder rechts)
			cloBox.waehleNachbar(ilvXEins, ilvYEins);
			
			// Holt die Werte Positionsdaten des zuvor rausgesuchten Nachbars
			ilvXZwei=cloBox.holeNachbarPosX();
			ilvYZwei=cloBox.holeNachbarPosY();
			
			// Kontrollausgabe, wenn gewünscht
			/*System.out.println("Vorher");
			System.out.println("Auserwählter: "+claEinwohner[ilvXEins][ilvYEins]);
			System.out.println("Auserwählter X: "+ilvXEins);
			System.out.println("Auserwählter Y: "+ilvYEins);
			System.out.println("Nachbar: " + claEinwohner[ilvXZwei][ilvYZwei]);
			System.out.println("NachbarPos X: "+ilvXZwei);
			System.out.println("NachbarPos Y: "+ilvYZwei);*/
			
			//Übergabe von zwei Charwerten
			cloBox.fuehreGespraech(claEinwohner[ilvXEins][ilvYEins],claEinwohner[cloBox.holeNachbarPosX()][cloBox.holeNachbarPosY()]); // Führt Gespräch mit gewähltem Nachbar, Bekehrung
		
			// Hole die neuen Werte
			claEinwohner[ilvXEins][ilvYEins]=cloBox.holeParteiA();
			claEinwohner[cloBox.holeNachbarPosX()][cloBox.holeNachbarPosY()]=cloBox.holeParteiB();
			// Kontrollausgabe, wenn gewünscht
			//cloBox.checkArray(claEinwohner);
			//System.out.println("Gesamtschleifendurchlauf "+i);
			ilvGesamtschleifendurchlauf=i;
		
			// Wahrscheinlichkeitsbrechnung
			ilvWahrscheinlichkeitsberechnung= (double)i;
			// System.out.println(ilvWahrscheinlichkeitsberechnung);
			// Kontrollausgabe, wenn gewünscht
		/*	System.out.println("Nachher");
			System.out.println("Auserwählter: "+claEinwohner[ilvXEins][ilvYEins]);
			System.out.println("Auserwählter X: "+ilvXEins);
			System.out.println("Auserwählter Y: "+ilvYEins);
			System.out.println("Nachbar: " + claEinwohner[ilvXZwei][ilvYZwei]);
			System.out.println("NachbarPos X: "+ilvXZwei);
			System.out.println("NachbarPos Y: "+ilvYZwei);
			System.out.println("++++++++++++++++++++++++++++++++++++");*/
			
		}// ende for
		
		
		
		
		
		System.out.println("Ende: ");
		System.out.println("Schleifendurchlauf: "+(ilvGesamtschleifendurchlauf+1));	
		System.out.println("Schwarz: "+cloBox.zaehleArray(claEinwohner, 's'));
		System.out.println("Rot: "+cloBox.zaehleArray(claEinwohner, 'r'));
		System.out.println("Grün: "+cloBox.zaehleArray(claEinwohner, 'g'));
		System.out.println("Gelb: "+cloBox.zaehleArray(claEinwohner, 'y'));
		
		System.out.println("Gesamtanzahl der Mitarbeiter: "+ claEinwohner.length*claEinwohner.length);
	 System.out.println("% Wahrscheinlichkeit "+(1/ilvGesamtschleifendurchlauf));
		
		
		

	}

}

Klasse
Java:
import java.util.*;
public class setUpBoxSecond {
	
	private char ilvParteiA;
	private char ilvParteiB;
	private char ilvParteiC;
	private int ilvXNachbar=0;
	private int ilvYNachbar=0;
	private int ilvStartSchwarz=41;
	private int ilvStartRot=41;
	private int ilvStartGruen=11;
	private int ilvStartGelb=7;
	
	
	
	public int holeNachbarPosX(){
		return this.ilvXNachbar;
	}
	public int holeNachbarPosY(){
		return this.ilvYNachbar;
	}
	public char holeParteiA() {
		return ilvParteiA;
	}

	public void setzeParteiA(char ilvParteiA) {
		this.ilvParteiA = ilvParteiA;
	}

	public char holeParteiB() {
		return ilvParteiB;
	}

	public void setzeParteiB(char ilvParteiB) {
		this.ilvParteiB = ilvParteiB;
	}

	
	
	// Methoden!!!!
	/**
	 * führt das Gespräch
	 * Es wird zufällig entschieden welche Person wen "bekehrt".
	 * @param clvEinstellungPersonA 
	 * @param clvEinstellungPersonB
	 * @author Name
	 */
	public void fuehreGespraech(char clvEinstellungPersonA, char clvEinstellungPersonB){
		
		
		int ilvZufallsZahl = genZz(2);
		char clvPuffer;
		
		switch(ilvZufallsZahl){
		
		case 0:
		clvEinstellungPersonA = clvEinstellungPersonB;
	
	//	System.out.println("Testgespräch A"+clvEinstellungPersonA);
		break;
		
		case 1:
		clvEinstellungPersonB=clvEinstellungPersonA;
		
	//	System.out.println("Testgespräch B"+clvEinstellungPersonB);
		break;
		
		default:
		System.out.println("ERROR in fuehreGespraeche");
		break;
		} // Ende Switch
		
		// Werte abspeichern
		this.ilvParteiA=clvEinstellungPersonA;
		this.ilvParteiB=clvEinstellungPersonB;
		
		
	}
	
	/**
	 * Generiert eine Zufallszahl 
	 * @author Name
	 * @param ilvX Position des Dorfbewohners auf der x-Achse
	 * @param ilvY Position des Dorfbewohners auf der y-Achse
	 * 
	 */
public void waehleNachbar(int ilvX, int ilvY){
	
	int ilvZufallsZahl = genZz(4);
		
	// Randfälle abfangen:
	// aus links mach rechts
	if (ilvX ==0 && ilvZufallsZahl ==3){
		ilvZufallsZahl=2;
		//System.out.println("aus links mach rechts");
	}
	// aus rechts mach links
	else if(ilvX==19&&ilvZufallsZahl==2){
		ilvZufallsZahl=3;
		//System.out.println("aus rechts mach links");
	}
	
	// Wenn Keine Änderungen nötig sind, wird einfach das übergebene intern eingespeichert
	switch(ilvZufallsZahl){
	case 2:
		// rechts
		this.ilvXNachbar=ilvX+1;
		break;
	case 3:
		// links
		this.ilvXNachbar=ilvX-1;
		break;
	default:
		this.ilvXNachbar=ilvX;
		break;
	} // rechts und links Switch
	
	//Randfälle abfangen
	// aus oben mach unten
	if (ilvY ==0 && ilvZufallsZahl ==1){
		ilvZufallsZahl=0;
		//System.out.println("aus oben mach unten");
	}
	// aus unten mach oben
	else if(ilvY==19&&ilvZufallsZahl==1){
		ilvZufallsZahl=0;
		//System.out.println("aus unten mach oben");
	}
	
	// Wenn Keine Änderungen nötig sind, wird  das übergebene intern eingespeichert
	switch (ilvZufallsZahl){
	case 0: 
		// oben
		this.ilvYNachbar=ilvY+1;
		
		break;
	case 1:
		// unten
		this.ilvYNachbar=ilvY-1;
		
		break;
	
	default:
		this.ilvYNachbar=ilvY;
		break;
				
	}// oben und unten Switch
	

} // Ende Metode

/**
 * @deprecated
 * @param ilvPosX
 * @param ilvPosY
 */
public void auswaehlenNachbar(int ilvX, int ilvY){
	// HIER IST IRGENDWO EIN FEHLER
		//TODO: Fehler bei den Randabfragen!

		int ilvZufallsZahl = genZz(4);
			
		
		
		// Wenn Keine Änderungen nötig sind, wird einfach das übergebene intern eingespeichert
		switch(ilvZufallsZahl){
		case 2:
			// rechts
			this.ilvXNachbar=ilvX+1;
			break;
		case 3:
			// links
			this.ilvXNachbar=ilvX-1;
			break;
		default:
			this.ilvXNachbar=ilvX;
			break;
		} // rechts und links Switch
		
		
		// Wenn Keine Änderungen nötig sind, wird  das übergebene intern eingespeichert
		switch (ilvZufallsZahl){
		case 0: 
			// oben
			this.ilvYNachbar=ilvY+1;
			
			break;
		case 1:
			// unten
			this.ilvYNachbar=ilvY-1;
			
			break;
		
		default:
			this.ilvYNachbar=ilvY;
			break;
					
		}// oben und unten Switch

	
}


 /**
  *@author Name
  * @param laenge Übergibt die Grenze, für die zufällig erstellten Zahlen 
  * @return Zufallszahl
  */
public int genZz(int laenge){ 
		
		Random iloZahlenMaschine = new Random();
		int ilvZahl = iloZahlenMaschine.nextInt(laenge); // Mind. 0 Max laenge (Array beginnt bei 0 an zu zählen)
		
		// Überprüfungscode:
		// System.out.println("LÄNGE: " + laenge);
		// System.out.println("Meine Zufallszahl: "+zahl);
		
		return ilvZahl; // übergibt zufällig generierte Zahl
	}

/**
 * setzt das gesamte Array auf die Startwerte zurück
 * Die Werte werden aus der Methode zufaelligeGesinnungEinfach geholt
 * @author Name
 * @param ar
 * @return Gibt das Array mit den neuen Werten zurück
 */
public char[][] setzeArrayZurück(char[][]ar){ //@param: setzezt Array auf Startwerte zurück; noch nicht fertig!
	
	ar = setzeArrayZurückAufFragezeichen(ar);
	
	int ilvArrayKapazitaet=(ar.length*ar.length);
	for (int y=0; y<20;y++){
		
	
		for(int x=0;x<20;x++){
			
			ar[y][x]=zufaelligeGesinnungKomplex(ar, ar.length*ar.length, ilvStartSchwarz, ilvStartRot, ilvStartGelb, ilvStartGruen);
			
		}// Ende for-Schleife x
	
	
	}// Ende for-Schleife y
	return ar;
	
}

/**
 * Füllt das Array mit '?' 
 * @author Name
 * @param ar
 * @return Gibt das Array mit den neuen Werten zurück
 */
private char[][] setzeArrayZurückAufFragezeichen(char[][]ar){ //@param: setzezt Array auf Startwerte zurück; noch nicht fertig!
	
	int ilvArrayKapazitaet=(ar.length*ar.length);
	for (int y=0; y<20;y++){
		
	
		for(int x=0;x<20;x++){
			
			ar[y][x]='?';
			
		}// Ende for-Schleife x
	
	
	}// Ende for-Schleife y
	return ar;
	
}

/**
 * Das Array wird mit den politischen Einstellungen befüllt
 * Einfach: schwartz oder rot
 * @author Name
 * @return gibt das Array mit neuen Werten zurück
 */
	
public char zufaelligeGesinnungEinfach(){ //@param: gibt zufällige Gesinnung zurück, schwarz oder rot
	
	int ilvWelchePartei=genZz(4);
	char clvRueckgabe ='?';
	
	switch(ilvWelchePartei){
	
	case 0:
		clvRueckgabe='s';
		break;
	case 1:
		clvRueckgabe='r';
		break;
	case 2:
		clvRueckgabe='g'; //grün
		break;
	case 3:
		clvRueckgabe='y'; // Yellow / Gelb
		break;
	default:
		
		System.out.println("ERROR in zuefaelligeGesinnungEinfach! int ilVWelchepartei = "+ilvWelchePartei);
		
	}//Ende-switch
	
	//Testcode
	//System.out.println(ilvWelchePartei);
	//System.out.println(clvRueckgabe);
	
	//@param
	//soll s oder r zurück geben
	return clvRueckgabe;
}
/**
 * Das Array wird mit den politischen Einstellungen befüllt
 * Komplex: s)chwarz, r)ot, g)rün, y)elb
 * @author Name
 * @param ilvProzentSchwarz/Rot/Gelb/Grün erwartet in Prozent
 * @return gibt das Array mit neuen Werten zurück
 */
public char zufaelligeGesinnungKomplex(char[][] alv, int ilvGrundwert, int ilvProzentSchwarz, int ilvProzentRot, int ilvProzentGelb, int ilvProzentGruen  ){ //@param: gibt zufällige Gesinnung zurück, schwarz oder rot
	
	// Prozent in Zahl
	int ilvAnzahlSchwarz = (ilvGrundwert*ilvProzentSchwarz)/100;
	int ilvAnzahlRot = (ilvGrundwert*ilvProzentRot)/100;
	int ilvAnzahlGelb = (ilvGrundwert*ilvProzentGelb)/100;
	int ilvAnzahlGruen = (ilvGrundwert*ilvProzentGruen)/100;
	
	int ilvWelchePartei=genZz(4);
	char clvRueckgabe ='?';
	
	switch(ilvWelchePartei){
	
	case 0:
		if(zaehleArray(alv, 's')<=ilvAnzahlSchwarz){
			//System.out.println("Schwarz");
			clvRueckgabe='s';
			break;
		}
		
	case 1:
		if(zaehleArray(alv,'r')<=ilvAnzahlRot){
			//System.out.println("Rot");
		clvRueckgabe='r';
		break;
		}
	case 2:
		if (zaehleArray(alv, 'g')<=ilvAnzahlGruen){
			//System.out.println("Grün");
		clvRueckgabe='g';
		break;
		}
	case 3:
		if(zaehleArray(alv, 'y')<=ilvAnzahlGelb){
			//System.out.println("Gelb");
		clvRueckgabe='y';
		break;
		}
	default:
		clvRueckgabe=zufaelligeGesinnungKomplex( alv,  ilvGrundwert,  ilvProzentSchwarz,  ilvProzentRot,  ilvProzentGelb,  ilvProzentGruen);
	//	System.out.println("ERROR in zuefaelligeGesinnungKomplex! int ilVWelchepartei = "+ilvWelchePartei);
	//	System.out.println("Schwarz "+zaehleArray(alv,'s')+"Rot "+zaehleArray(alv,'r')+"Grün "+zaehleArray(alv,'g')+"Gelb " +zaehleArray(alv,'y'));
	
		
	}//Ende-switch
	
	//Testcode
	//System.out.println(ilvWelchePartei);
	//System.out.println(clvRueckgabe);
	
	//@param
	//soll s oder r zurück geben
	return clvRueckgabe;
}
/**
 * Gibt den kompletten Inhalt des Arrays in der Console aus
 * @author Name
 * @param ar
 */

public void checkArray(char[][] ar){ 
	int ilvDurchlaufzahl=0;
	for (int y=0; y<20;y++){
		
		
		for(int x=0;x<20;x++){
			ilvDurchlaufzahl++;
			System.out.println(ilvDurchlaufzahl+"<>"+ar[y][x]);
			
		}// Ende for-Schleife x
	
	
	}// Ende for-Schleife y
	
}
/**
 * Zählt den gesuchten Wert im Array
 * @param ar übergebenes Array
 * @param clvSuche
 * @return gibt die ermittelte Anzahl durch
 */
public int zaehleArray(char[][] ar, char clvSuche){
	int count=0;
	for (int y=0; y<20;y++){
		
		for (int x=0; x<20;x++){
			if(ar[x][y]==clvSuche){
				count ++;
			}
		}
		
		
	}
	
	return count;
}



}


Ausgabe:
Start:
Schleifendurchlauf: 1
Schwarz: 161
Rot: 165
Grün: 45
Gelb: 29
Ende:
Schleifendurchlauf: 50000
Schwarz: 129
Rot: 254
Grün: 17
Gelb: 0
Gesamtanzahl der Mitarbeiter: 400
% Wahrscheinlichkeit 0

Fasko
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Wie Rechne ich die Zeit in ...L um? Java Basics - Anfänger-Themen 15
A Rechne Problem. Java Basics - Anfänger-Themen 8
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
D Anfängerfrage zu meinem Programm. Java Basics - Anfänger-Themen 15
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
J Frage zu meinem Code (OOP) Java Basics - Anfänger-Themen 4
NadimArazi Wie kann ich eine collision detection für die Paddles in meinem Pong Programm hinzufügen? Java Basics - Anfänger-Themen 4
A wie kann ich es in meinem Programm rein tun Java Basics - Anfänger-Themen 8
C konstruktiver Kritik zu meinem Lösungsansatz Java Basics - Anfänger-Themen 22
E extern Datei von meinem Computer aufmachen Java Basics - Anfänger-Themen 5
J Erste Schritte Was mache ich in meinem Code falsch. Java Basics - Anfänger-Themen 3
W Wo ist der Wurm in meinem Grundverständnis von Klassen? Java Basics - Anfänger-Themen 22
K Wie kontrolliere ich ob ich die Zahl in meinem Array schon hab? Java Basics - Anfänger-Themen 9
B Grundsatzfragen zu meinem neuen Projekt Einnahmen-Ausgaben App Java Basics - Anfänger-Themen 8
K Error bei meinem Programm - Hilfe Java Basics - Anfänger-Themen 8
R Was muss ich an meinem Code ändern? Java Basics - Anfänger-Themen 2
S Hilfe bei meinem Code [Schleife]? Java Basics - Anfänger-Themen 5
M Problem mit meinem Programm Java Basics - Anfänger-Themen 6
W Dezimalzahl in Binär umwandeln - Was sollte ich an meinem Programm verbessern? Java Basics - Anfänger-Themen 5
W Wie ziehe ich positive ungerade Zahlen von meinem Hauptwert ab? Java Basics - Anfänger-Themen 17
V Operatoren Was will mir die Tabelle in meinem Lehrbuch sagen? (logische Operatoren) Java Basics - Anfänger-Themen 4
N Problem bei meinem Code Java Basics - Anfänger-Themen 10
P Erste Schritte Bitte ein paar Erklärungen zu meinem Code Java Basics - Anfänger-Themen 6
H OOP, wie gehts richtig? (Beispiel von meinem Prof) Java Basics - Anfänger-Themen 6
H IOException in meinem Programm Java Basics - Anfänger-Themen 7
K Frage zu meinem ersten Programm Java Basics - Anfänger-Themen 5
K Frage zu meinem Programm Java Basics - Anfänger-Themen 25
F Methoden Kleines Problem mit meinem Glücksrad... Java Basics - Anfänger-Themen 9
O Wert in einer URL hinzufügen (in meinem Beispiel Google) Java Basics - Anfänger-Themen 7
M Wo ist der Fehler in meinem Programm? Java Basics - Anfänger-Themen 12
G Welche Java-Version auf meinem Rechner? Java Basics - Anfänger-Themen 2
D Keine Ausgabe in meinem Helden Programm Java Basics - Anfänger-Themen 2
M kurze frage zu meinem Code ... Java Basics - Anfänger-Themen 3
S Wie ist folgender Kommentar in meinem Ant file zu verstehen..? Java Basics - Anfänger-Themen 0
N Frage zu meinem Calculator Java Basics - Anfänger-Themen 6
D Verschiedene Fragen zu meinem Projekt Java Basics - Anfänger-Themen 6
F Hilfe bei meinem Spiel Java Basics - Anfänger-Themen 3
X Datentypen Probleme mit Char bei meinem 1. Spiel Java Basics - Anfänger-Themen 20
D Problem mit meinem ersten JOptionPane - Fatal exception occurred. Program will exit. Java Basics - Anfänger-Themen 6
K Hilfe, komme nicht weiter in meinem JAVA-Spiel Java Basics - Anfänger-Themen 3
C ArrayIndexOutOfBoundsException bei meinem ersten objektiorientierten Programm Java Basics - Anfänger-Themen 4
H frage zu meinem quellcode Java Basics - Anfänger-Themen 10
B Wo ist der Fehler in meinem Script Java Basics - Anfänger-Themen 4
Gonzalez Eingabe des Benutzers mittels readLine()-Methode. Klappt in meinem Beispiel nicht! Java Basics - Anfänger-Themen 7
M Fehler in meinem Quicksort! Java Basics - Anfänger-Themen 21
JeromeM90 Problem bei meinem Programm : Lottozahlen Java Basics - Anfänger-Themen 30
S Was ist falsch an meinem Rechner? Java Basics - Anfänger-Themen 7
S Ich habe ein kleines Problem mit meinem Übungsprogramm Java Basics - Anfänger-Themen 7
N NullPointerException bei meinem AbstractListModel Java Basics - Anfänger-Themen 4
G Brauche eure Hilfe bei meinem Programm Java Basics - Anfänger-Themen 4
A Ä;Ö;Ü warum geht das nicht mit meinem Konsolenprogramm ? Java Basics - Anfänger-Themen 5
A Java I/O Probleme mit meinem Encypter. Java Basics - Anfänger-Themen 6
S was ist in meinem code falsch? Java Basics - Anfänger-Themen 2
M brauche hilfe bei meinem Taschenrechner mit dem "-&quot Java Basics - Anfänger-Themen 4
G fibonacci was stimmt an meinem code nicht? Java Basics - Anfänger-Themen 2
C Zugriff auf Datein in meinem jar File Java Basics - Anfänger-Themen 23
D frage zur meinem objekt. sinnvolle objektmethode Java Basics - Anfänger-Themen 3
megachucky Problem bei meinem Videothek-Programm Java Basics - Anfänger-Themen 5
K komme in meinem stammchat nicht rein. Java Basics - Anfänger-Themen 6
megachucky Was kann ich besser / sinnvoller machen bei meinem code Java Basics - Anfänger-Themen 7
G Was is falsch mit meinem program? (stringvergleich-problem) Java Basics - Anfänger-Themen 8
J Probleme mit meinem Taschenrechner Java Basics - Anfänger-Themen 2
T Kann mir jemand wörtlich erklären, was in dem Code genau passiert? Java Basics - Anfänger-Themen 1
Ü Dead Code im Programm? Java Basics - Anfänger-Themen 13
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
terashy VS Code Project run error Java Basics - Anfänger-Themen 10
JaZuDemNo Code Erklärung Java Basics - Anfänger-Themen 3
M Connect-4-Code analysieren Java Basics - Anfänger-Themen 2
N BMI Rechner Was haltet ihr von dem Code habt ihr Verbesserungsvorschläge weil design teschnisch ist das nicht das geilste würde das gerne überarbeiten Java Basics - Anfänger-Themen 12
W In alten Code zurück- und dort wieder zurechtfinden? Java Basics - Anfänger-Themen 17
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
T Fehlercode bei code der das Alter ausrechnet Java Basics - Anfänger-Themen 2
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
jhfjeh Strukturgramm in code Java Basics - Anfänger-Themen 11
D Tipps zum Code Java Basics - Anfänger-Themen 24
W Java-Code mit Array Java Basics - Anfänger-Themen 14
W Java-Code Java Basics - Anfänger-Themen 2
W Java code- TicTac toe Java Basics - Anfänger-Themen 51
W Java-code Java Basics - Anfänger-Themen 8
W Java-code Java Basics - Anfänger-Themen 9
W Java-Code erklären Java Basics - Anfänger-Themen 6
ohneInformatik; For Schleife. Was macht dieser Code?? Java Basics - Anfänger-Themen 5
Say Fehlenden Code finden in einer while-Schleife? Java Basics - Anfänger-Themen 11
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
Say Stelle in Code herausfinden, wie geht man vor? Java Basics - Anfänger-Themen 12
Say do-While Code Ausführung Java Basics - Anfänger-Themen 3
W Rückfrage zur Programmgestaltung (clean code) Java Basics - Anfänger-Themen 12
M intelliJ auf neuem PC, plötzlich kein Code Java Basics - Anfänger-Themen 3
Pinhg Sound in Greenfoot Code einbinden Java Basics - Anfänger-Themen 2
C Java boolean Code läuft nicht Java Basics - Anfänger-Themen 5
I Code für Bezahlsystem (auch bei Offline Aktivität) Java Basics - Anfänger-Themen 7
J Größter gemeinsamer Teiler: mein Code Java Basics - Anfänger-Themen 6
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10
A Wie könnte man diesen Code kürzer machen ? Java Basics - Anfänger-Themen 7
Alen123 Warum funktioniert mein Code nicht? Java Basics - Anfänger-Themen 64
Max246Sch Frage zu Währungsrechner Code Java Basics - Anfänger-Themen 2
S Hilfe bei Umänderung von Java Code Java Basics - Anfänger-Themen 16
I Code wird nicht ausgeführt Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben