# Problem mit Klausuraufgabe



## Zorlu81 (19. Sep 2004)

Hallo Leute!

hab da ein Problem mit einer Klausur Aufgabe! und bitte um Hilfe!
ich hab schon einen Lösungsansatz, komme aber schon seit gestern abend einfach nicht weiter!

Ich weiss das das zwar jetzt nicht gerade die richtige Art ist! aber hier einmal die 

1) Aufgabenstellung! +  1)Mein Lösungsansatz

Schreiben sie eine Methode zufallsArray in den unten vorgegebenen Rahmen, welche ein int-Array mit ganzzahligen Zuffalszahlen erzeugt, die alle zwischen einer vorgegebenen unteren Grenze UNTEN und einer oberen Grenze OBEN liegen. Diese beiden Grenzen und die Größe des Arrays GRÖßE werden als Parameter übergeben;
Die Methode gibt das gefüllte Array zurück. So liefert etwa der Aufruf zufallsArray(1,6,10) ein Array mit 10 zufällig gewählten Zahlen zwischen 1 u 6 (einschließlich der grenzen)

Verwenden Sie die Methode double Math.random(), die bei jedem Aufruf einen Zufallswert z liefert mit 
(0.0 <= z <= 1.0) Sie können beim Programmieren der Methode davon ausgehen, dass die übergebenen Parameter plausibel sind (also unten<oben, größe>0)


```
int [] zufallsArray(int unten, int oben, int größe)
{
}
```


2) Mein Lösungsansatz  ???:L 


```
import java.lang.Math.*;

class LetzeKlausurA01d
{
 public static void main (String [] args)
 {
  	
 	System.out.println(zufallsArray(1,6,10));
    
 }

	static double [] zufallsArray(int unten, int oben,int größe)
	{
	 double [] arr = new double[größe]; 	
	 
                 for(int i=1; i<=größe; i++)
	    {
	     double tmp = (double)Math.random() * 10;
	               tmp = (int)tmp;
        
                     arr[i-1] = tmp;
                     System.out.println(arr[i-1]);
	    }
	 return arr;
	 }
```


----------



## Sky (19. Sep 2004)

Also, deine Hausaufgaben mache ich nicht, aber ein paar kleine Fragen, die Dir evtl. weiterhelfen:

1. Frage: Warum verwendest Du kein int-Array?
2. Frage: An welcher Stelle prüfst Du auf UNTEN und OBEN ab??
3. Frage: Warum beginnst Du deine for-Schleife mit 1 und nicht mit 0?
4. Warum wird dein Rückgabewert "return arr;" nicht weiter verarbeitet, sondern die Ausgabe in der Methode durchgeführt??

So, nun viel Glück bei Deiner Aufgabe.

Grüsse, Sky


----------



## foobar (19. Sep 2004)

```
public class LetzeKlausurA01d
{
	public static void main(String[] args)
	{
		System.out.println(randomArray(1, 6, 10));
	}

	static int[] randomArray(int min, int max, int length)
	{
		int[] arr = new int[length];
		for (int i = 0; i < length; i++)
		{
			int tmp = getRandom( max );
			while (tmp  < min)
			{
				tmp = getRandom( max );
			}
			arr[i] = tmp;
			System.out.println(arr[i]);
		}
		return arr;
	}
	
	static int getRandom(int max)
	{
		return (int)(Math.random() * max);
	}
}
```


----------



## Zorlu81 (19. Sep 2004)

Also wenigstens du gibst die Mühe mir auf die Sprünge zu Helfen! jetzt schonmal DANKESCHÖN nun zu deinen Fragen, die mir evt. weiterhelfen!

zu1) ein INT Array hab ich zunächst nicht genommen, da Math.random() kein integer Wert ausgibt sondern eine fließkomazahl.
zu2) den Aufgabenteil hab ich absichtlich erstmal weggenommen, da ich lediglich erstmal mein Array füllen  und das ausgeben will!
zu3) natürlich hast du recht! bei 0 sollte es schon anfangen, da ja ein Array mit em Index 0 beginnt! somit kann ich in der Zeile 22 u 23 ja das arr[i-1] ersetzen durch arr_
zu4) Die Ausgabe habe in der Methode hab ich lediglich zu testzwecken da hineingebracht um zu gucken, ob das Array den auch die Werte bekommen hat!

ich bin auch schon ein Schritt weiter mit der Aufgabe! aber auch nur en kleinen!  also bitte bitte weiterhelfen! =)

ich will auch ganz bestimmt nicht, dass ihr für mich die Aufgabe löst sonder mir behilflich seit!_


----------



## Sky (19. Sep 2004)

Also,

1) mit *(int)* kannst Du ein double in ein int casten

```
int tmp = (int)Math.random() * 10;
```

2) Ok... aber schön weitermachen 

3) Auch OK

4) Sorry, wußte nicht, dass es nur ein Test war...


----------



## Gast (19. Sep 2004)

Hey Sky80 + L-ectron-X + foobar + nollario!

Wollt mich mal ganz herzlich bei euch allen bedanken! Ihr wisst garnicht wie sehr ihr mir geholfen habt! hab schon ganz derbe Kopfweh von dem ganzen prog.!

wünsch euch allen einen schönen Abend! 

JIPPPPPIIIII


----------



## Bleiglanz (20. Sep 2004)

oje oje oje 

nimm lieber java.util.Random

public int nextInt(int n)

    Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence. The general contract of nextInt is that one int value in the specified range is pseudorandomly generated and returned. All n possible int values are produced with (approximately) equal probability.


```
static int[] randomArray(int min, int max, int length)
   {
      int[] arr = new int[length];
      java.util.Random rnd = new java.util.Random();      
      int range = max-min;
      for (int i = 0; i < length; i++)
      {
         arr[i] = min+rnd.nextInt(range);
      }
      return arr;
   }
```


----------



## P3AC3MAK3R (20. Sep 2004)

Verschoben: Aufgaben und Gesuche


----------



## foobar (20. Sep 2004)

> nimm lieber java.util.Random


Die Aufgabe war aber, das Problem mit Hilfe von Math.random zu lösen. ;-)


----------



## Bleiglanz (20. Sep 2004)

OOps sorry, hatte ich nicht gelesen


> Verwenden Sie die Methode double Math.random(), die bei jedem Aufruf einen Zufallswert z liefert mit
> (0.0 <= z <= 1.0) Sie können beim Programmieren der Methode davon ausgehen, dass die übergebenen Parameter plausibel sind (also unten<oben, größe>0)


Nebenbei: wieder einmal eine unsinnige Aufgabe, die verhindert, dass die Leute das Java API besser kennenlernen


----------



## foobar (20. Sep 2004)

> Nebenbei: wieder einmal eine unsinnige Aufgabe, die verhindert, dass die Leute das Java API besser kennenlernen


Tja, so ist das mit den Lehrern ;-)


----------



## Sky (20. Sep 2004)

foobar hat gesagt.:
			
		

> > Nebenbei: wieder einmal eine unsinnige Aufgabe, die verhindert, dass die Leute das Java API besser kennenlernen
> 
> 
> Tja, so ist das mit den Lehrern ;-)



Mein Erfahrung: Es ist (manchmal) so mit den Lehrern, da sie die API selbst nicht gut genug kennen und nur Übungsbeispiele aus irgendwelchen Büchern verwenden und nicht mehr weiter kommen, sobald es darüber hinaus geht.    :wink: 

Natürlich kann ich diesen konkreten Fall hier nicht bewerten, da ich den Lehrer nicht kenne...


----------

