Problem mit Funktionen

Pechvogel

Newbie
Registriert
Mai 2007
Beiträge
7
Hallo Leute,

ich habe folgendes Problem. Ich möchte ein Array mit Zufallszahlen füllen und diese auf der Konsole ausgeben das klappt auch soweit auch ganz gut. Allerdings funktioniert die Ausgabe der Zufallszahlen nur wenn ich die Berechnung direkt im Main machen lasse, wie man im Auskommentiert teil sehen kann. So jetzt kommt mein Problem wenn ich die Berechnung in eine Funktion auslagere bekomme ich immer nur die selbe Zahl ausgegeben.

Also noch mal in kürze ohne Funktion funktioniert alles, mit Funktionen nicht.

Habe ich da irgendwo einen Logikfehler drin oder liegt das an C#

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            Program pro = new Program();
            const int arraygroesse = 4;
            int i;
            int[] zahlen = new int[arraygroesse];
            //Random rnd = new Random();

        /* array auf null setzten */
            for (i = 0; i <= arraygroesse - 1;  i++)
            {
                zahlen[i] = 0;
            }

        /* array mit zufallszahlen fuellen */
            //for (i = 0; i <= arraygroesse - 1; i++)
            //{
            //    zahlen[i] = Convert.ToInt16((rnd.NextDouble() * 10) + 1);
            //}

            for (i = 0; i <= arraygroesse - 1; i++)
            {
                zahlen[i] = pro.ZufallsZahl(10, 1);
            }

        /* ausgabe des arrays */
            for (i = 0; i <= arraygroesse - 1; i++)
            {
                Console.WriteLine(zahlen[i]);
            }

            Console.ReadKey();
        }

    /* funktion zum erzeugen von zufallszahlen */
        int ZufallsZahl(int bereich, int startwert)
        {
            Random rnd = new Random();
            return Convert.ToInt16((rnd.NextDouble() * bereich) + startwert);
        }
    }
}

Ich hoffe das mir von euch einer Helfen kann.

mfg
Pechvogel
 
wahrscheinlich wird der zufallszahlengenerator immer mit dem gleichen seed neu erzeugt - spendier der klasse mal ne private-variable random, erzeuge die im ein mal konstruktor und rufe in der funktion unten dann nur noch nextdouble() auf.
 
Oder direkt diese hier...
http://msdn.microsoft.com/de-de/library/zd1bc8e5.aspx

Im Übrigen finde ich die Bezeichner "bereich" und "startwert" alles andere als geschickt gewählt... sinnvoller:
Code:
// rnd wie maxwell-cs gesagt halt als Klassenmember... notfalls das ganze in eine Hilfsklasse auslagern...
int ZufallsZahl(int min, int max)
{
    return rnd.Next(max + 1 - min) + min;
}
 
Zurück
Oben