Math.random

Status
Nicht offen für weitere Antworten.
J

JulianS

Gast
Hi,

ich schreibe im Moment ein programm, mit dem ich für eine Funktion unter anderem verschiedene Zahlen auslesen muss. Ich bekomme Datensätze aus einer MySQL Datenbank und schreibe diese in ein Report.
Je nach dem wieviele Datensätze erscheinen (welche ich über math.random ermittle und maximal 4 sein darf) sollen die gleiche anzahl an stunden dahinter erscheinen, d.h. 4 daten sätze + 4 stunden. Das Ergebniss der Stunden muss in jedem Fall 8 sein, egal wieviele Datensätze erscheinen. Bei 1,2 und 3 Datensätzen habe ich das problemlos hingekriegt, wenn aber 4 Datensätze erscheinen bekomme ich teilweise als stunden 0, das darf aber nich vorkommen!!

Kann mir jemand helfen?


Das ist nur der Ausschnitt für 4 Datensätze, habe das ganze zusammen mit 1,2 und 3 Datensätze in ein switch gepackt:

Code:
// 4 Datensätze pro Tag
		default:
			stds = (int) (Math.random() * 5) + 1;
System.out.println("1. Zufallszahl: "  + stds);
			std[0] = stds;
System.out.println("STD 0 : " + stds);
			stds = 8-std[0];
System.out.println("1. Rest : " + stds);
			
			std[1] = (int) (Math.random() * stds - 2) + 1;
System.out.println("STD 1 : " + std[1]);

			stds = 8-(std[0] + std[1]);
System.out.println("2. Rest : " + stds);
			std[2] = (int) (Math.random() * stds - 1) + 1;
System.out.println("STD 2 : " + std[2]);

			stds = 8-(std[0] + std[1] + std[2]);
System.out.println("3. Rest : " + stds);
			std[3] = stds;
System.out.println("STD 3 : " + stds);
			
			ergebniss = std[0] + std[1] + std[2] + std[3];
System.out.println("Ergebniss : " + ergebniss);
System.out.println("-------------------------------------------------------------------------");
			
		break;
 
S

SlaterB

Gast
der Code scheint mir narrensicher (wenn auch unschön),
ich bekomme nie ein Ergebnis != 8
Code:
public class Test2
{

    public static void main(String[] args)
    {
        for (int i = 0; i < 10000; i++)
        {
            int[] std = new int[4];
            int stds = (int)(Math.random() * 5) + 1;
            // System.out.println("1. Zufallszahl: " + stds);
            std[0] = stds;
            // System.out.println("STD 0 : " + stds);
            stds = 8 - std[0];
            // System.out.println("1. Rest : " + stds);

            std[1] = (int)(Math.random() * stds - 2) + 1;
            // System.out.println("STD 1 : " + std[1]);

            stds = 8 - (std[0] + std[1]);
            // System.out.println("2. Rest : " + stds);
            std[2] = (int)(Math.random() * stds - 1) + 1;
            // System.out.println("STD 2 : " + std[2]);

            stds = 8 - (std[0] + std[1] + std[2]);
            // System.out.println("3. Rest : " + stds);
            std[3] = stds;
            // System.out.println("STD 3 : " + stds);

            int ergebnis = std[0] + std[1] + std[2] + std[3];
            // System.out.println("Ergebnis : " + ergebnis);
            if (ergebnis != 8)
            {
                System.out.println("Ergebnis : " + ergebnis);
            }
        }
        System.out.println("Ende");
    }
}
 
G

Guest

Gast
Erstmal Danke!
Aber leider funktioniert das auch noch nicht so wie ich mir das wünsche, habe mich vielleicht auch ein bisschn falsch ausgedrückt.

Wenn die 2. Zahl ermittelt wird, also praktisch hier:
Code:
std[1] = (int) (Math.random() * stds - 2) + 1;
System.out.println("STD 1 : " + std[1]);

wird manchmal die Zahl ermittelt, das darf aber eigentlich nicht vorkommen, wenn vier Datensätze vorhanden sind, sollten auch vier Zahlen ermittelt werden, von denen keine 0 sein darf und das Endergebniss sollte immer 8 sein.
 
S

SlaterB

Gast
> Wenn die 2. Zahl ermittelt wird, [..] wird manchmal die Zahl ermittelt, das darf aber eigentlich nicht vorkommen [..]

???

was ist das Problem?,
Beispiele helfen ungemein..
 
G

Guest

Gast
Sorry, sollte heißen: wird manchmal die Zahl 0 ermittelt, habe wohl die 0 vergessen
 
S

SlaterB

Gast
ersetze
Math.random() * stds - 2
durch
Math.random() * (stds - 2)
usw.
 

merlin2

Top Contributor
Nebenbei, warum verwendet man Math.random(), wenn es doch die Klasse Random gibt? Verwendet Math nicht auch Random?
 
G

Guest

Gast
habs auch grade probiert...glaube das liegt daran, dass Random sich nicht einfach auf (int) casten lässt... .mit Math.Random funktionierts aber problemlos
 
D

DevilTricker

Gast
Code:
int stds = (int)(Math.random() * 5) + 1;

so stehts in seinem code...er will also ein int rausbekommen...versuche übrigens auch grade ein int zu kriegen...aber eins ohne kommastellen..zum beispiel für nen würfelspiel[/code]
 

merlin2

Top Contributor
*Aus Math.java kopier*:
Code:
    public static double random() {
        if (randomNumberGenerator == null) initRNG();
        return randomNumberGenerator.nextDouble();
}
Also, wozu Math.random()?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Math.Random Java Basics - Anfänger-Themen 9
W Bestimmte Zahlen bei Math.random ausschließen? Java Basics - Anfänger-Themen 31
S Math.random funktioniert nicht Java Basics - Anfänger-Themen 5
alialhajhossein math.random Java Basics - Anfänger-Themen 3
D Wahrscheinlichkeiten mit Math.random() Methode Java Basics - Anfänger-Themen 1
A Random Double mit Math.round() runden? Java Basics - Anfänger-Themen 1
B Math.random mit Boolean array? Java Basics - Anfänger-Themen 17
I math.random Grenzwerte Java Basics - Anfänger-Themen 2
E Methoden Math.Random() kürzen ? Java Basics - Anfänger-Themen 2
J Klassen Math && Random: wie zufällig sind Zufallszahlen? Java Basics - Anfänger-Themen 19
J Methoden Math.random unklar Java Basics - Anfänger-Themen 4
Thorwine Erste Schritte Wuerfelspiel mit Math.random() Java Basics - Anfänger-Themen 10
S Math.random() Zufall ? Java Basics - Anfänger-Themen 2
H Ist Math.Random() eine Methode oder ein Methodenaufruf (Klausurfrage) Java Basics - Anfänger-Themen 4
X Problem mit Math.random() Java Basics - Anfänger-Themen 2
T Random vs. Math.random() Java Basics - Anfänger-Themen 2
B Verstehe ZufallInt = (int) (Math.random() * 5 + 1); nicht Java Basics - Anfänger-Themen 9
T Zufallserzeugung mit math.random und speichern in array Java Basics - Anfänger-Themen 29
J Woher kommt das Objekt "Math" bei Math.random(); ? Java Basics - Anfänger-Themen 3
P Typecasting für Ganzzahlige Zufallszahl (Math.random) Java Basics - Anfänger-Themen 2
J Bedeutung von math.random() math.round() Java Basics - Anfänger-Themen 7
F Problem Math.random in for-Schleife Java Basics - Anfänger-Themen 8
R (Math.random()*49) zahl darf aber nur einmal gezogen werden Java Basics - Anfänger-Themen 11
C math.random() Java Basics - Anfänger-Themen 9
R math.random wertebereich 16-21 Java Basics - Anfänger-Themen 3
B Math.random und Strings Java Basics - Anfänger-Themen 13
Luk10 math.random() Java Basics - Anfänger-Themen 2
J Math.random() - kurze frage. Java Basics - Anfänger-Themen 20
T Math.random() Zahlen von 25 - 50. Wie? Java Basics - Anfänger-Themen 7
H Brauche ganz dringend HILFEEE! Math random Java Basics - Anfänger-Themen 19
T Math.Random negativer Intervall Java Basics - Anfänger-Themen 2
B Zahlenwiederholung bei Math.random verhindern Java Basics - Anfänger-Themen 4
J Zufallszahl ohne Math.random Java Basics - Anfänger-Themen 4
A Probleme mit Math.random Java Basics - Anfänger-Themen 4
P 2n Potenzieren ohne Math.pow oder pow Java Basics - Anfänger-Themen 8
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
sserio Math. Befehl wird rot markiert Java Basics - Anfänger-Themen 5
L Math.exp also eigenen Algorithmus Java Basics - Anfänger-Themen 2
V Erste Schritte Berechnen von Sinus; sin(x) ohne Math.* Java Basics - Anfänger-Themen 1
B Potenzrechnung mit WindowBuilder ohne math.pow() Java Basics - Anfänger-Themen 1
B Potenzen ohne Math.pow Java Basics - Anfänger-Themen 4
N Datentypen Math.floor rundet nicht ab Java Basics - Anfänger-Themen 4
S Math.ceil für float Java Basics - Anfänger-Themen 1
M Warum ist dieses Feld der Klasse Math immutable? Java Basics - Anfänger-Themen 7
S math Methoden in Java (quadrat) Java Basics - Anfänger-Themen 7
C Erste Schritte Math.sin und Co. funktionieren nicht Java Basics - Anfänger-Themen 5
A Potenzen ohne math.pow Java Basics - Anfänger-Themen 1
L Klassen Point- und Math-Klasse Java Basics - Anfänger-Themen 3
J Musterlösung Verständnis Frage zu Math.abs() Java Basics - Anfänger-Themen 5
J java.lang.math asin() Java Basics - Anfänger-Themen 18
L Math.floor und double Array Java Basics - Anfänger-Themen 13
B Math.acos() Java Basics - Anfänger-Themen 4
N Methoden Probleme mit Math.cos Java Basics - Anfänger-Themen 3
J Methoden Rekursive Potenz ohne Math.Pow() Java Basics - Anfänger-Themen 9
Luk10 3. Wurzel mit Math.pow(x, (1/3)) Java Basics - Anfänger-Themen 2
J Datentypen Math.sqrt() immer NaN Java Basics - Anfänger-Themen 8
T Ungenaue Werte bei Math.atan Java Basics - Anfänger-Themen 10
M Math.round Java Basics - Anfänger-Themen 32
M Math Class Java Basics - Anfänger-Themen 2
B Math.abs Java Basics - Anfänger-Themen 4
Haave Postfix-Rechner: mehrere math. Operationen nacheinander ausführen Java Basics - Anfänger-Themen 8
T Math.signum Java Basics - Anfänger-Themen 2
N Math + Variablen + Ausgabe Java Basics - Anfänger-Themen 2
B math. Operationen + Ausgabe Fehler :S Java Basics - Anfänger-Themen 5
C math.pow funktionert nicht richtig oder garnicht Java Basics - Anfänger-Themen 4
G Quelltext von Methoden in der Klasse Math Java Basics - Anfänger-Themen 11
D runden ohne math! (zur not auch mit) Java Basics - Anfänger-Themen 9
G Klasse Math Java Basics - Anfänger-Themen 2
T Math.tan() Problem Java Basics - Anfänger-Themen 2
M Math.sin in Radiant in Java? Java Basics - Anfänger-Themen 5
C Math-Funktion Java Basics - Anfänger-Themen 10
S Math.tan Problem rechnet falsches Ergebniss aus. Java Basics - Anfänger-Themen 3
F Math.abs() Java Basics - Anfänger-Themen 3
M Probleme mit Math.round() Java Basics - Anfänger-Themen 5
P Math.abs, praktische Anwendung? Java Basics - Anfänger-Themen 4
M Eclipse: Fehler bei: import java.lang.math Java Basics - Anfänger-Themen 7
D math und abs() Java Basics - Anfänger-Themen 14
E Problem mit Methode Math.max Java Basics - Anfänger-Themen 2
G Math.cos Java Basics - Anfänger-Themen 4
S Math-Befehl für Quadrieren! Java Basics - Anfänger-Themen 6
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
laxla123 Bedeutung int random Java Basics - Anfänger-Themen 3
monsterherz Arbeiten mit Random Java Basics - Anfänger-Themen 12
XWing Random Punkte erstellen mit der Random klasse Java Basics - Anfänger-Themen 15
I aus 2 random zahlen soll nur die ungerade summe der beiden genommen werden. Java Basics - Anfänger-Themen 13
K Problem mit "Random" Java Basics - Anfänger-Themen 5
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
S Random(x,y,z) Java Basics - Anfänger-Themen 4
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
L Zufälliges Objekt aus der ArraylList ohne java.util.Random Java Basics - Anfänger-Themen 56
W Random Zahl unter Berücksichtung eines Durchschnitts Java Basics - Anfänger-Themen 7
T Random soll Zufallszahl beibehalten. Java Basics - Anfänger-Themen 11
C Arraywerte random vertauschen Java Basics - Anfänger-Themen 2
SchmidiMC Methoden Random in Methode neu generieren lassen Java Basics - Anfänger-Themen 1
J Operatoren Random wird nur einmal erstellt und dann immer verwendet Java Basics - Anfänger-Themen 2
D Erste Schritte Random erzeugen Java Basics - Anfänger-Themen 28
D Erste Schritte Random Java Basics - Anfänger-Themen 79
Z Problem mit "Random" in Java Java Basics - Anfänger-Themen 12
Z Array-Index einmalig je mit Random füllen Java Basics - Anfänger-Themen 7
J Wie lege ich eine durch Random ausgesuchte Zahl in ein Array? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben