# Zahl mit bestimmter Länge und nur bestimmten Zahlen generieren lassen



## NobodyGER (27. Jan 2013)

Hey Leute,

ich brauche eine Methode welche mir nach Übergabe zweier Werte (Länge und "Größte Zahl")
einen Zufälligen Integer zurückgibt welcher eben diesen Werten entspricht.
Sprich -> die Länge des Integers sollte eben der übergebenen Länge entsprechen und es sollten nur Zahlen in diesem Int vorkommen welche <= Größter Zahl sind.

Beispiel:
Länge = 4
Größte Zahl = 6
Gelieferter Wert: 1506

und z.B. NICHT 1705 und nicht 106 oder 12435

Wäre cool wenn mir jemand helfen könnte 

Ich habe es bisher so probiert:

```
int random = (int)(Math.random()*maxNumber);
int temp;
for (int i = 0; i < length ; i++) {
temp = (int)(Math.random()*maxNumber);
random = Integer.parseInt(String.valueOf(random + "" + temp);
}
```
Aber funktioniert irgendwie nicht so richtig..

Liebe Grüße.


----------



## Marcinek (27. Jan 2013)

Was bedeutet es funktioniert nicht so richtig?


----------



## NobodyGER (27. Jan 2013)

naja ich habe den code ein par mal durchlaufen lassen aber ab und zu kommen noch Zahlen vor, welche z.B. zu kurz sind :/. Also das mit den bestimmten Zahlen klappt mittlerweile, nur eben die Länge der Zahl stimmt eben nicht immer..


----------



## utnovetur (27. Jan 2013)

Hallo,

du könntest dir einmal die Methode java.util.Random.nextInt(int n); ansehen - das vereinfacht das Bestimmen von temp;

Außerdem würde ich das ständige Wechseln zwischen int und String vermeiden.
Schreib doch in der for-Schleife etwas wie 


```
random = 10 * random + temp;
```


----------



## JCODA (27. Jan 2013)

Spoiler: Langweilig





```
public static int getRandom(int length, int max) {
		Random r = new Random();
		int result = r.nextInt(max) + 1;
		length--;		
		do{
			result*=10;
			result+=r.nextInt(max+1);
			length--;
		}while(length>0);		
		return result;
	}
```






Spoiler: Bisschen besser





```
static Random q = new Random();
	public static int _(int l, int m) {		
		return l==0?q.nextInt(m):l==1?_(0,m) + 1:_(l-1, m)*10+_(0,m+1);		
	}
```






Spoiler: Und einmal pervers





```
import java.util.Random;
public class Zufall {
	public static void main(String[] args) {
		for(int i=0;i<100;i++){
			System.out.println(_(4,6,0));
		}
	}	
	static Random q = new Random(0);
	public static int _(int ß, int €, int µ) {		
		return €<0?ß+µ:ß<0?€*10:ß==0?q.nextInt(€):ß==1?_(_(0,€,0),-1,1):_(_(-1,_(ß-1, €,0),0),-1,_(0,€+1,0));		
	}	
}
```




:joke:
Ich sollte eigentlich nicht posten und den TO selbst draufkommen lassen... tut mir leid.


----------



## Timothy Truckle (27. Jan 2013)

Dann darf ich auch mal....
	
	
	
	





```
public static int getRandom(int length, int max) {
        Random r = new Random();
        StringBuilder numberString = new StringBuilder(length);
        for (int i = 0;i<length;i++){
            numberString.append(r.nextInt(max+1));
        }
        return Integer.parseInt(numberString.toString());
    }
```
bye
TT


----------



## JCODA (27. Jan 2013)

Timothy Truckle hat gesagt.:


> Dann darf ich auch mal....
> 
> 
> 
> ...


Liefert leider ab und zu zu kurze Zahlen, wenn die erste Zahl 0 ist.


----------



## Timothy Truckle (27. Jan 2013)

JCODA hat gesagt.:


> Liefert leider ab und zu zu kurze Zahlen, wenn die erste Zahl 0 ist.


Richtig, die +1 gehört hinter die Metode:
	
	
	
	





```
r.nextInt(max)+1
```

bye
TT


----------

