P
prodonn
Gast
Hi,
wie schreibe ich ein programm, das solange würfelt bis ein pasch kommt?
wie schreibe ich ein programm, das solange würfelt bis ein pasch kommt?
do {
ergebnisA = würfel()
ergebnisB = würfel()
} while (ergebnisA != ergebnisB)
Java:do { ergebnisA = würfel() ergebnisB = würfel() } while (ergebnisA != ergebnisB)
Dann doch lieber nur einen Würfel werfen und den anderen auf den selben Wert setzen
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;
}
}
a) warum kaust du ihm alles vor?
b) warum legst du den thread random 0 ms schlafen?
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.
Wenn du dir den anderen Thread des TO anschaust, kannst du dir die Zeit mit kotzen ausfüllena) mir war grad langweilig...
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] verwendenb) wieso 0ms? damit man nicht mehrmals hintereinander die gleichen zahlen kriegt.
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)nur weil ich ein danke für einen nützlichen beitrag verdient finde?
wieso 0ms?
(long) new Random().nextDouble()
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)
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:
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);
}
Ich glaube er will darauf hinaus, dassQuatsch ist, weil da immer 0 rauskommt.Code:(long) new Random().nextDouble()
0.94525486
0.12616083
0.66240716
0.44997197
0.08774629
0.31162557
0.034802414
0.9388701
0.6829761
0.6609974
0.6243153
0.16821659
dann caste die ergebnisse mal aufDas stimmt aber nicht.... Ich hab mal den Test gemacht:
Code:0.94525486 0.12616083 0.66240716 0.44997197 0.08774629 0.31162557 0.034802414 0.9388701 0.6829761 0.6609974 0.6243153 0.16821659
(long)
dann caste die ergebnisse mal aufCode:(long)
longs haben aber selten kommastellenSind schon
while(true)
{
System.out.println((float)new Random().nextDouble());
System.out.println(new Random().nextDouble());
}
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
ähm nu ist es ohnegucks dir selbst an:
Java:while(true) { System.out.println((float)new Random().nextDouble()); System.out.println(new Random().nextDouble()); }
(long)
(float)
for(int i = 1; i < 100; i++) {
System.out.print((long) new Random().nextDouble());
System.out.print(" ");
}
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
les dir lieber nochmal durch, was du oben geschrieben hastwillst du nochmal ein anfänger tut machen tut
gucks dir selbst an:
Java:while(true) { System.out.println((float)new Random().nextDouble()); System.out.println(new Random().nextDouble()); }
for(int x=0; x<10000; x++);
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.
Random rand = new Random();
for (...) {
double doubleVal = rand.nextDouble();
}
link? find das in der aktuellen version der insel nicht.in der insel steht es ja auch: