Ungerade Zufallszahlen in JAVA

JavaUndC-Prog

Bekanntes Mitglied
Hallo,

Ich möchte mir gerne zufällige Werte in einem Intervall generieren lassen und dabei sollen diese Werte ungerade sein.

Ich habe selbst ein bisschen gebastelt, aber leider bekomme ich des öfteren eine 0 geliefert und das kann eigentlich nicht sein, da die 0 nicht im Intervall inbegriffen ist.

Java:
import java.util.*;
public class Zufallszahlen_Tester {

	private static Random rand = new Random();
	
	public static int gen_zufzahl(int min, int max){
		return rand.nextInt(max - min + 1) + min;		
	}
	
	public static int gen_zufzahl_ungerade(int min, int max){
		int var;
		
		var = gen_zufzahl(min, max);
		int x = 0;
		if((var % 2 == 1)){
			x = var;
		}
		return x;
	}
	
	public static void main(String[] args){
		for(int i = 0; i < 10; i++){
			System.out.println(gen_zufzahl_ungerade(3, 11));
		}
	}
}

das ganze sollte bitte ohne Do While erfolgen, damit ist es nämlich einfacher ;-)
Danke für eure Hilfe

Alles sollte eigentlich in der Methode. public static int gen_zufzahl_ungerade(int min, int max)
Ablaufen
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

Java:
var = gen_zufzahl( min, max );
int x = 0;
if( (var % 2 == 1) )
{
     x = var;
}
return x;
ist doch logisch ... immer dann, wenn Deine if-Bedingung nicht erfüllt ist, gibst Du hier einfach 'x' (also '0') zurück !
Vielleicht solltest Du Dir einen gescheiten else-Fall überlegen ;)

Gruß Klaus
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

nun, ich weiß auch nicht, was Du in einem solchen Fall machen willst/sollst :bahnhof:

Du könntest bspw. den gefundenen Wert 'var' in- oder dekrementieren, um dann auf jeden Fall wieder eine ungerade Zahl zu bekommen.
Oder eben doch halt eine Schleife drumlegen, die solange läuft, bis ein 'echter' ungerader Wert ermittelt wurde .....

Your choice :bae:

Gruß Klaus

EDIT
das ganze sollte bitte ohne Do While erfolgen, damit ist es nämlich einfacher
was ist denn für an Schleifen so schwer ????
 
Zuletzt bearbeitet:

JavaUndC-Prog

Bekanntes Mitglied
Nein gerade weil die do while so einfach ist, möchte ich das nicht... ;-)

Ich hab mir etwas kluges überlegt switch case :D
Das haut hin, aber gibts noch eine "bessere" Lösung ?
 
Zuletzt bearbeitet:

MisterBu

Aktives Mitglied
Ungefähr so:
Code:
var [COLOR=#339933]=[/COLOR] gen_zufzahl[COLOR=#009900]([/COLOR] min/2, max/2 [COLOR=#009900])[/COLOR][COLOR=#339933];
var = 2 * var + 1;
[/COLOR]
Wobei man sich noch genauer mit den Grenzen beschäftigen sollte
 

VfL_Freak

Top Contributor
Moin,

Nein gerade weil die do while so einfach ist, möchte ich das nicht... ;-)
hää ??

Ich hab mir etwas kluges überlegt switch case :D
Ob nun "switch" oder "if-else" ist doch (zumindest in diesem banalen Fall) völlig unerheblich! Was machst Du denn in den einzelnen Switches ???:L

gibts noch eine "bessere" Lösung?
den tenären Operator (Javabeginners - Ternaerer Operator) !!

Gruß Klaus
 

VfL_Freak

Top Contributor
aha, und wenn es dann wieder ein gerade Zahl wird ???
Irgendwie schreit das doch dann geradezu nach einer Schleife (ob nun WHILE oder FOR ist auch egal) ..... :noe:
 

JavaUndC-Prog

Bekanntes Mitglied
Stimmt ich habs mir nochmal genauer angesehen also auch nochmal in den Debugger geschaut. Du hast recht !

Aber kann ich eine Schleife nicht in einen IF Block umschrieben und wenn ja, wie in diesem Fall ?
 

JavaUndC-Prog

Bekanntes Mitglied
Nun das verstehe ich, also gibt es keine andere "Einfache" Möglichkeit das mit einem IF und IF ELSE zu lösen ? Sondern nur mit While oder Do While ?
 

JavaUndC-Prog

Bekanntes Mitglied
Danke nochmal an alle hier, ihr habt mir gut weitergeholfen !

VfL_Freak deine Lösung mit if Else funktioniert aber nicht so gut, da wird immer noch 0 ausgegeben ?!
 

VfL_Freak

Top Contributor
Moin,

warum sollte sowas nicht funktionieren ??
Java:
int var = gen_zufzahl( min, max );
int x = 0;
if( (var % 2 == 1) )
{
    x = var;
}
else
{
    x = var++;
    // oder alternativ
    // x = var--;
}
return x;

Gruß Klaus
 

VfL_Freak

Top Contributor
Moin,

was meinst Du mit aber ??
Sieht doch gut aus !

Es halt das Prinzip von Zufallszahlen, dass sie zufällig kommen:D
Mit welchem min/max hast Du denn aufgerufen??

Gruß Klaus
 

InfectedBytes

Top Contributor
Das Problem ist das "x=var++", in dem Fall sollte es wenn "x=++var" sein.
Denn die Zeile "x=var++;" ist im Grunde das selbe wie "x=var; var++;"

Allerdings wäre es weitaus einfacher folgendes zu machen:
Java:
int var = 2*gen_zufzahl( min, max )+1;
 

JavaUndC-Prog

Bekanntes Mitglied
Beil dieser Implementierung ?:
Java:
	public static int gen_zufzahl_ungerade(int min, int max){
		int var;
		int x = 0;
		var = gen_zufzahl(min, max);

		if((var % 2 == 1)){
			x = var;
		}
		else
		{
		    //x = var++;
		    
			var = 2*gen_zufzahl( min, max )+1;
		}
		return x;
	}
 

InfectedBytes

Top Contributor
nein, entweder der unnötig komplizierte ansatz
Java:
	public static int gen_zufzahl_ungerade(int min, int max){
		int var;
		int x = 0;
		var = gen_zufzahl(min, max);
 
		if((var % 2 == 1)){
			x = var;
		}
		else
		{
		    x = ++var;
		}
		return x;
	}

oder nur die eine zeile:
Java:
var = 2*gen_zufzahl( min, max )+1;

bzw. in einer Mthode:
Java:
public static int gen_zufzahl_ungerade(int min, int max){
  return 2*gen_zufzahl( min, max )+1;
}

p.s. die grenzen min bzw. max sollten ggf noch angepasst werden
 
Zuletzt bearbeitet:

JavaUndC-Prog

Bekanntes Mitglied
Danke euch,

also nochmal zum letzte Kommentar, die letzte Lösung liefert Wert größer > der Eingabe

Java:
	public static int gen_zufzahl_ungerade(int min, int max){
		int var;
		int x = 0;
		var = gen_zufzahl(min, max);
 
		if((var % 2 == 1)){
			x = var;
		}
		else
		{
		    x = ++var;
		}
		return x;
	}

Ist die Lösung das haut hin. Danke, großes LOB !
 
Zuletzt bearbeitet:

JavaUndC-Prog

Bekanntes Mitglied
Alles gut !

Ich hab das ja in der while und do while locker und einfach gelöst, weil es da auch einfach ist ;-)
Ich bevorzuge aber immer gerne mal den komplizierten Weg, ich hab hierbei z.b. noch was von euch lernen können !
Danke sehr !
 

CSHW89

Bekanntes Mitglied
Danke euch,

also nochmal zum letzte Kommentar, die letzte Lösung liefert Wert größer > der Eingabe

Java:
	public static int gen_zufzahl_ungerade(int min, int max){
		int var;
		int x = 0;
		var = gen_zufzahl(min, max);
 
		if((var % 2 == 1)){
			x = var;
		}
		else
		{
		    x = ++var;
		}
		return x;
	}

Ist die Lösung das haut hin. Danke, großes LOB !
Bei dieser Lösung gibt es aber zwei Probleme.
1. Falls 'max' eine gerade Zahl ist (sagen wir 6), und gen_zufzahl 6 zurückgibt, wird 1 addiert und 7 zurückgegeben, was nicht in den Grenzen liegt.
2. Falls 'min' eine ungerade Zahl ist, ist die Wahrscheinlichkeit, diese zu ziehen, geringer. Wenn z.b. 'min = 1' und 'max = 3' ist, sind mögliche Werte von gen_zufzahl 1, 2, 3. 1 bleibt unverändert (33%), 2 und 3 kommt 3 raus (66%).

Mit ein bisschen Arithmetik kann man beide Probleme einfach lösen:
Java:
public static int gen_zufzahl_ungerade(int min, int max){
	// 'number' gibt an, wie viele ungerade Zahlen es zwischen 'min' und 'max gibt.
	// Berechne zunächst '(max - min + 1) / 2'.
	// Es gibt aber noch den Spezialfall, dass 'min' und 'max' beide ungerade Zahlen sind.
	// Dann gibt es noch eine weitere ungerade Zahl.
	// Dies macht der hintere etwas kompliziertere Part.
	// Könnte man natürlich auch mit einem 'if' machen.
	int number = (max - min + 1) / 2 + ((min % 2 == 1) ? (max % 2) : 0);
	int i = gen_zufzahl(0, number-1);
	// Nun gebe die i-te ungerade Zahl im Intervall aus.
	// Falls 'min' gerade ist, muss man noch 1 addieren: '(1-min%2)'.
	return min + (i*2) + (1-min%2);
}
Drei Zeilen und fertig ;)
lg Kevin
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K zufallszahlen int / double, gerade / ungerade problem . Java Basics - Anfänger-Themen 2
I aus 2 random zahlen soll nur die ungerade summe der beiden genommen werden. Java Basics - Anfänger-Themen 13
D Gerade oder ungerade Zahl mittels Methoden Java Basics - Anfänger-Themen 13
S Zufällige ungerade Zeile aus Text-Datei lesen Java Basics - Anfänger-Themen 5
H Ungerade Zahlen ausgeben von 1 bis 1000 Java Basics - Anfänger-Themen 8
W Wie ziehe ich positive ungerade Zahlen von meinem Hauptwert ab? Java Basics - Anfänger-Themen 17
P Ungerade Zahlen ausgeben lassen zwischen Spannweite zweier eingegeben zahlen Java Basics - Anfänger-Themen 6
C Ungerade Zahlenfolge ausgeben Java Basics - Anfänger-Themen 11
M Gerade/ungerade---alter Forenbeitrag Java Basics - Anfänger-Themen 4
U JAVA - Ungerade Zahlen Array Java Basics - Anfänger-Themen 9
T Methoden HILFE! readLine() liest nur ungerade Zeilen?? Java Basics - Anfänger-Themen 2
J Erste Schritte Array: Häufigkeiten bzw. gerade/ungerade Zahlen Java Basics - Anfänger-Themen 5
T Erste Schritte Berechnung von gerade und ungerade Zahlen Java Basics - Anfänger-Themen 10
S Gerade bzw. Ungerade Zufallszahl generieren Java Basics - Anfänger-Themen 5
M ungerade zahlen eines arrays nach hinten tauschen Java Basics - Anfänger-Themen 13
F kleines Programm für ungerade oder gerade Zahl. Java Basics - Anfänger-Themen 18
Xtracter 3 gerade, 3 ungerade, 3 gerade, usw. Zahlen aufzählen Java Basics - Anfänger-Themen 20
D Array nach ungerade zahlen sortieren Java Basics - Anfänger-Themen 6
N Ungerade Zahlen Java Basics - Anfänger-Themen 6
B methode ungerade löschen usw usw Java Basics - Anfänger-Themen 3
M gerade und ungerade Zahl ermitteln Java Basics - Anfänger-Themen 11
X Werte vergleichen ob gerade oder ungerade geht das? Java Basics - Anfänger-Themen 4
B Gerade ungerade Zahlen Java Basics - Anfänger-Themen 3
H Zufallszahlen generieren Java Basics - Anfänger-Themen 5
H 36 Zufallszahlen die sich nicht wiederholen Java Basics - Anfänger-Themen 27
J Zufallszahlen generieren und Werte vergleichen Java Basics - Anfänger-Themen 3
S Hilfe : Unendlich viele Zufallszahlen erstellen? Java Basics - Anfänger-Themen 8
J Fehler beim generieren von 4 Zufallszahlen Zahl doppelt ist eigentlich ausgeschlossen Java Basics - Anfänger-Themen 9
S Aus gleichverteilte Zufallszahlen normalverteilte Zufallszahlen generieren ? Java Basics - Anfänger-Themen 1
N Array mit Zufallszahlen und Divison Java Basics - Anfänger-Themen 7
A Mit Rekursion Zufallszahlen erstellen und größte finden Java Basics - Anfänger-Themen 5
S Schiffe versenken - Zufallszahlen in einem Array Java Basics - Anfänger-Themen 6
A Dreidimensionales Array mit Zufallszahlen befüllen Java Basics - Anfänger-Themen 18
J Klassen Math && Random: wie zufällig sind Zufallszahlen? Java Basics - Anfänger-Themen 19
T Methoden HashSet Objekt mit Zufallszahlen befüllen Java Basics - Anfänger-Themen 3
L Array-Problem/Zufallszahlen Java Basics - Anfänger-Themen 7
V Array mit Zufallszahlen - Anfänger - Hilfe Java Basics - Anfänger-Themen 12
B Zufallszahlen ohne Wiederholung Java Basics - Anfänger-Themen 10
D Array mit Zufallszahlen, dann sortieren: Hilfe gesucht! Java Basics - Anfänger-Themen 1
B Zufallszahlen unabhängig von Intervallen Java Basics - Anfänger-Themen 2
B Zufallszahlen & Laufzeitmessung (insertionSort) Java Basics - Anfänger-Themen 7
W Zufallszahlen Java Basics - Anfänger-Themen 3
R Arrays Zufallszahlen Java Basics - Anfänger-Themen 10
W 10x10 Feld mit Zufallszahlen erstellen Java Basics - Anfänger-Themen 4
B Array erstellen,ausgeben,mit zufallszahlen füllen aber wie ? Java Basics - Anfänger-Themen 1
T Zufallszahlen von x bis 80 Java Basics - Anfänger-Themen 10
P Zufallszahlen ohne zahlen einer List Java Basics - Anfänger-Themen 21
K Keine doppelten Zufallszahlen im Array Java Basics - Anfänger-Themen 17
G Zufallszahlen Gewichten Java Basics - Anfänger-Themen 3
J Zufallszahlen Häufigkeit Java Basics - Anfänger-Themen 8
L 6stellige Zufallszahlen erzeugen & auf einzigartigkeit prüfen Java Basics - Anfänger-Themen 3
W Java 2 Teams mit Zufallszahlen Java Basics - Anfänger-Themen 2
R Keine doppelten Zufallszahlen Java Basics - Anfänger-Themen 2
F Array mit Zufallszahlen sortieren Java Basics - Anfänger-Themen 7
G Methoden BigInteger Zufallszahlen erzeugen Java Basics - Anfänger-Themen 5
X write() und Zufallszahlen Java Basics - Anfänger-Themen 2
L Zufallszahlen addieren Java Basics - Anfänger-Themen 6
J Mehrere Zufallszahlen erzeugen, aber keine darf doppelt erzeugt werden - Wie? Java Basics - Anfänger-Themen 5
T Problem mit Zufallszahlen Java Basics - Anfänger-Themen 2
T Matrizzen addition mit zufallszahlen Java Basics - Anfänger-Themen 10
E Zufallszahlen Java Basics - Anfänger-Themen 7
R Probleme mit Zufallszahlen Java Basics - Anfänger-Themen 10
K Datentypen Gleiche Zufallszahlen in verschiedenen Datenstrukturen Java Basics - Anfänger-Themen 6
C Zufallszahlen mit Arrays Java Basics - Anfänger-Themen 8
P Array mit Zufallszahlen von einem Wuerfel Java Basics - Anfänger-Themen 15
B Zufallszahlen in ein Array eintragen. Java Basics - Anfänger-Themen 7
P Zufallszahlen fuer Lotto generieren Java Basics - Anfänger-Themen 28
L Hilfe, doppelte Zufallszahlen Java Basics - Anfänger-Themen 13
S Wie Zufallszahlen in txt speichern? Java Basics - Anfänger-Themen 4
K zufallszahlen in Array Speichern = Nullpointer exception Java Basics - Anfänger-Themen 24
F Aus Regulären Ausdrücken Zufallszahlen bilden Java Basics - Anfänger-Themen 6
M Zufallszahlen mit Random Java Basics - Anfänger-Themen 4
S Summe von Zufallszahlen Java Basics - Anfänger-Themen 9
B Zufallszahlen Java Basics - Anfänger-Themen 5
M Zufallszahlen aus einem bestimmten Intervall Java Basics - Anfänger-Themen 5
N Normalverteilte Zufallszahlen mit benutzerdefiniertem/r EW/Var Java Basics - Anfänger-Themen 5
C Zufallszahlen Problem Java Basics - Anfänger-Themen 6
C Zufallszahlen Java Basics - Anfänger-Themen 3
C Frage zur Generierung von Zufallszahlen Java Basics - Anfänger-Themen 9
W Zufallszahlen für Array Java Basics - Anfänger-Themen 3
G Problem mit Zufallszahlen Java Basics - Anfänger-Themen 6
G Zufallszahlen die alles einmal vorkommen Java Basics - Anfänger-Themen 15
G Lotto Zufallszahlen zählen Java Basics - Anfänger-Themen 3
A Zufallszahlen generieren Java Basics - Anfänger-Themen 2
A Problem mit dem Zufallszahlen-Generator Java Basics - Anfänger-Themen 17
J Zufallszahlen einmalig ausgeben Java Basics - Anfänger-Themen 6
B Int Array mit Zufallszahlen füllen Java Basics - Anfänger-Themen 8
G Zufallszahlen ohne doppelten Wert Java Basics - Anfänger-Themen 5
R Zufallszahlen mit Java Java Basics - Anfänger-Themen 11
N Zufallszahlen wiederholungslos erzeugen Java Basics - Anfänger-Themen 8
G Zufallszahlen erraten Java Basics - Anfänger-Themen 8
X Lotto Zufallszahlen mit ArrayList erstellen Java Basics - Anfänger-Themen 3
M Zufallszahlen fertig! aber nice to have noch offen Java Basics - Anfänger-Themen 5
M generierung von zufallszahlen Java Basics - Anfänger-Themen 4
B Zufallszahlen erzeugen die nicht gleich sind ;/ Java Basics - Anfänger-Themen 10
M Zufallszahlen Java Basics - Anfänger-Themen 3
B Satz Zufallszahlen ohne Wiederholung Java Basics - Anfänger-Themen 14
G Zufallszahlen Java Basics - Anfänger-Themen 4
N ganzzahlige Zufallszahlen Java Basics - Anfänger-Themen 13
B Zufallszahlen je einmal in Array einfügen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben