Würfel Pasch

B

bone2

Gast
Java:
do {

ergebnisA = würfel()
ergebnisB = würfel()

} while (ergebnisA != ergebnisB)

das sind primitive grundlagen, das hat man in der 2. unterrichtsstunde. schau dir mal schleifen und verzweigungen an...
 

KingOfExceptions

Bekanntes Mitglied
Ist wahrscheinlich nicht soooo optimal aber es funktioniert :D

Java:
import java.util.Random;

public class PaschWuerfel
{
	public static void main(String[] args)
	{
		int ergebnis1;
		int ergebnis2;
		do
		{
			ergebnis1=wuerfeln();
			try
			{
				Thread.sleep((long) new Random().nextDouble());
			}
			catch (InterruptedException e)
			{
				e.printStackTrace();
			}
			ergebnis2=wuerfeln();
			System.out.println("Wurf 1: "+ergebnis1+" ; Wurf 2: "+ergebnis2);
			
		}while(ergebnis1!=ergebnis2);
	}
	
	static int wuerfeln()
	{
		return new Random().nextInt(6)+1;
	}
}
 
B

bone2

Gast
a) warum kaust du ihm alles vor?

b) warum legst du den thread random 0 ms schlafen?

edit: ah, die sig, eine danke hure
 

KingOfExceptions

Bekanntes Mitglied
a) warum kaust du ihm alles vor?

b) warum legst du den thread random 0 ms schlafen?

a) mir war grad langweilig...
b) wieso 0ms? damit man nicht mehrmals hintereinander die gleichen zahlen kriegt.
Galileo Computing hat gesagt.:
Bevor der Zeitwert in eine Fließkommazahl umgewandelt wird, ist noch eine weitere Überlegung erforderlich. Wenn Sie die Zufallszahlengenerierung mehrmals hintereinander aufrufen, ähneln sich die ersten Zufallszahlen sehr, denn der Startwert ändert sich dort erst circa in der achten Nachkommastelle.

EDIT: eine danke HURE?! was soll das denn? nur weil ich ein danke für einen nützlichen beitrag verdient finde? heute vergreifen sich aber eine menge im tonfall.... :shock:
 
Zuletzt bearbeitet:

faetzminator

Gesperrter Benutzer
a) mir war grad langweilig...
Wenn du dir den anderen Thread des TO anschaust, kannst du dir die Zeit mit kotzen ausfüllen ;)
b) wieso 0ms? damit man nicht mehrmals hintereinander die gleichen zahlen kriegt.
Auch wenn tatsälich meist die Systemzeit eine Rolle spielt, halte ich die dort aufgeführten Erläuterungen nicht gerade als Musterbeispiel. Und wenn, dann kann man gleich [c]Thread.yield()[/c] verwenden :)

nur weil ich ein danke für einen nützlichen beitrag verdient finde?
Das wird nützlich, sobald man "Danke" gegen EUR eintauschen kann... Ansonsten können wir es wie immer machen: Hose runter, Sch****vergleich! (Ich will damit zum Ausdruck bringen, dass die Diskussion über "Danke" sinnlos ist)
 

KingOfExceptions

Bekanntes Mitglied
Das wird nützlich, sobald man "Danke" gegen EUR eintauschen kann... Ansonsten können wir es wie immer machen: Hose runter, Sch****vergleich! (Ich will damit zum Ausdruck bringen, dass die Diskussion über "Danke" sinnlos ist)

Jetzt kommt doch alle mal runter... Für so ein kleines Mini-Programm braucht man doch nichts zahlen... zumindest nicht, wenn mir langweilig ist :D Fazit: Die Danke-Diskussion ist hier fehl am Platze.
 
B

bone2

Gast
b) wieso 0ms? damit man nicht mehrmals hintereinander die gleichen zahlen kriegt.

EDIT: eine danke HURE?! was soll das denn? nur weil ich ein danke für einen nützlichen beitrag verdient finde? heute vergreifen sich aber eine menge im tonfall.... :shock:

b) ein 0.xyz double auf int gecasted ist immer 0
es vergehen eh schon cycles, wo er beispielsweise die 1 im würfeln zum random ergbnis addiert, sleep ist imo unnötig.

Java:
        for(int i = 1; i < 100; i++) {
            int a = new Random().nextInt(6)+1;
            int b = new Random().nextInt(6)+1;
            System.out.println(a + " " + b);
        }

[OT]posten nur weil man danke sammeln will. bin ich großer fan von, vor allem wenn man esnoch in so aufdringlicher großer roter schrift 2mal in der sig verlangt. user werden sich schon bedanken wenn sie es für angemessen halten. der danke button hat nicht wirklich einen sinn und ist imo total überflüssig[/OT]
 

KingOfExceptions

Bekanntes Mitglied
gucks dir selbst an:

Java:
while(true)
		{
			System.out.println((float)new Random().nextDouble());
			System.out.println(new Random().nextDouble());
		}

bei mir:
Java:
0.35304937050031937
0.57134867
0.08915329762139412
0.50101256
0.8350171473768307
0.10843991
0.12935842168212308
0.5716726
0.1814527523930266
0.34938252
0.8976548457419956
0.44961387
0.22339332215266905
0.021389892
0.6685597804250061
0.93727386
0.15727694166815864
0.010215317
0.01408403087556176
0.23602504
0.15169041755660528
0.6871222
0.03415573352586265
0.6091017
0.16813481123190044
0.9008272
0.34578191840035444
0.8937171
0.8841820898809468
0.6847016
0.5749515258714147
0.4232552
0.3876110281928201
0.35756648
0.2683719929934676
0.6901733
0.2706738913233484
0.79659474
0.12379776572231871
0.5687502
0.8481165343921588
0.10041666
0.9213374094112482
0.69680667
0.90146875798269
0.051615387
0.05092268793704846
0.9730155
0.22554008042849194
0.35392022
0.47071418655613095
0.07187537
0.5737426403183031
0.11542147
0.8491184275948734
0.6358773
0.43576046031027693
0.97530526
0.6821506877956487
0.6857569
0.9576658881384938
0.2565417
 
B

bone2

Gast
gucks dir selbst an:

Java:
while(true)
		{
			System.out.println((float)new Random().nextDouble());
			System.out.println(new Random().nextDouble());
		}
ähm nu ist es ohne
Code:
(long)
und mit
Code:
(float)
?

Java:
        for(int i = 1; i < 100; i++) {
            System.out.print((long) new Random().nextDouble());
            System.out.print(" ");
        }

Code:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

willst du nochmal ein anfänger tut machen ;) tut
les dir lieber nochmal durch, was du oben geschrieben hast
 

KingOfExceptions

Bekanntes Mitglied
ok ich lese mir selbst das tut wohl noch ein wenig besser durch ;)

ok trotzdem mal die frage: wieso sollte man das denn dann nicht zwischen zwei randoms machen?

Java:
for(int x=0; x<10000; x++);

in der insel steht es ja auch:

Bevor der Zeitwert in eine Fließkommazahl umgewandelt wird, ist noch eine weitere Überlegung erforderlich. Wenn Sie die Zufallszahlengenerierung mehrmals hintereinander aufrufen, ähneln sich die ersten Zufallszahlen sehr, denn der Startwert ändert sich dort erst circa in der achten Nachkommastelle.
 
Zuletzt bearbeitet:
G

Gast2

Gast
Wenn man das richtig implementiert ist es völlig egal wieviel Zeit zwischen zwei Zufallszahlen vergeht. Du musst einfach nur eine Instanz von Random erzeugen.

Java:
Random rand = new Random();
for (...) {
  double doubleVal = rand.nextDouble();
}

Das Problem bei deiner Variante ist folgendes:
Der Defaultkonstruktor von Random verwendet System.nanoTime() als seed, wenn du viele Random Instanzen schnell hintereinander erzeugst kanns durchaus vorkommen dass sich die seeds ähneln. Aber eine Random Instanz reicht doch auch?! Es ist außerdem testfreundlicher, da du nen festen seed übergeben kannst und immer die selben Zufallszahlen bekommst.
 
B

bone2

Gast
in der insel steht es ja auch:
link? find das in der aktuellen version der insel nicht.

new Random() erzeugt ja einen neuen Pseudogenerator auf der Basis von nano. Das dürfte, durch die aktionen zwischen den beiden random aufrufen verstrichene zeit, genug untershcied für solche einfache fälle wie das hier liefern. es ist nur nicht genug für kryptographie
 

Crian

Top Contributor
Dafür hab ich ihn mal gedrückt. *grinst*

Sicher sind diese Danke-Butons nicht wirklich wichtig. Man bräuchte sie nicht. Trotzdem freue ich mich einerseits, wenn sich jemand damit (oder im Beitrag) Bedankt und man kann auch sich irgendwo bedanken, ohne etwas dazu zu schreiben, weil es einem weitergeholfen hat oder man die Aussage gut fand.

Danke-Knopf-Drücke gezielt zu sammeln, ist aber irgendwie seltsam *schmunzelt*
 

Ähnliche Java Themen

Neue Themen


Oben