# Zufallszahlen in einem Wertebereich



## vaporizer (17. April 2004)

Hallo

also die Sache ist die:
ich will eine Zufallszahl erzeugen
erstens Ganzzahlen also int
und zweitens im Bereich von -50 bis 50
kann mir bitte jemand helfen

Schöne Grüße von vaporizer


----------



## Thomas Darimont (17. April 2004)

Hallo!

Siehe:

(Denke diesmal brauche ich keine Kommentare...)


```
import java.util.Random;

/*
 * Created on 17.04.2004
 */

/**
 * @author Thomas Darimont
 */
public class RandomRange {

	private Random rnd;
	private int rangeStart;
	private int rangeEnd;

	public RandomRange(int rS, int rE) {
		rangeStart = rS;
		rangeEnd = rE;
		rnd = new Random();
	}

	public static void main(String[] args) {
		RandomRange rr = new RandomRange(-50, 50);
		for (int i = 0; i < 1000; i++) {
			System.out.println(rr.nextInt());
		}
	}

	private int nextInt() {
		return ((rangeStart - 1) + rnd.nextInt()) % (rangeEnd + 1);
	}
}
```

Gruß Tom


----------



## djwawe (17. April 2004)

Hi Thomas,
gibt es einen Grund dagegen, das so zu machen?

```
int zufallszahl = (int) (Math.random()*100-50);
```

Ich frage nur, weil es extra eine Klasse für sowas gibt.


----------



## Patrick Kamin (17. April 2004)

*-*

Nein, Math.random() benutzt auch ein Random-Objekt, ist aber statisch.


----------



## djwawe (17. April 2004)

Alles klar, danke


----------



## vaporizer (17. April 2004)

tja und ich danke euch für die Verwirrung  
Kann ich nun djwawe's Version nehmen?
bzw. welche Nachteile bringt sie mit sich?


----------



## vaporizer (17. April 2004)

also gut verwendet hab ich sie
und je nach dem welche Zahl ich statt dem 50ziger stehen hab,
dementsprechenden Wertebereich hab ich.
nur jetzt ist folgendes..
ich hab nun keinen bereich wo - und + zahl gleich ist (-50 bis +50)
sondern zB -20 bis 130
bzw ich möchte mit hilfe meiner Methode einen gewünschten Bereich eingeben
ist dies mit dieser Math.Random klasse möglich?


----------



## basuhexe (31. Mai 2004)

Wie kann man das in swing über eine Ausgabe geschickt steuern?


----------



## Gorcky (31. Mai 2004)

Ganz einfach: Math.random() gibt dir eine (Komma-)Zahl zwischen 0 und 1.
Heißt also: Du multiplizierst diese Zahl mit der Wertebereichsspanne und ziehst so viel davon ab, wie die Zahl ins Minus geht (bzw. zählst zu, wenn Untergrenze im Plus).

Konkret:

```
private int neueZahl(int untere, int obere)
{
int spanne = obere - untere;
return (int) (Math.random()*spanne+untere) 
//ja, + ist richtig, da + minuszahl ins minus geht
}
```


----------

