Zufallszahlen

FuMe

Grünschnabel
Hallo alle zusammen!

Ich hätte schon wieder eine Frage. Und zwar geht's um Zufallszahlen.
Ich weiß zwar, dass ich mit "Random" Zufallszahlen machen kann - aber wie kann ich zB 10-er Sprünge oder ähnliches machen?

Beispiel:
Ich will, dass es mir aus den Zahlen 2-9; 10,20,30....90; (mit 10-er Sprüngen) und 200, 300,...900 (100er Sprünge) eine Zahl auswählt - jetzt wäre eure Hilfe gefrage - bitte :)

Vielen Dank
mfg
fume
 
Hi.

Das könntest z.B. so machen:

Code:
static string[] Zahlen = 
{
       "10",
       "20",
       "30",
       "40"
};

Dann schreibst ne Methode:

Code:
private void ZieheZahl()
{
        Random generator = new Random();
        Console.WriteLine(Zahlen[generator.Next(0, 4)]);
}

Hoffe dir geholfen zu haben! :)


MfG Alexander12
 
Hi.

Ich find die methode oben einfacher. Da musst nichts rechnen etc. Da schreibst die Zahlen 10-100 oder was auch immer rein und der Zufallsgenerator wählt was aus. ;)


MfG Alexander12
 
Aber die Multi Methode ist einfacher, und vorallem DYNAMISCH, deine ist das nicht Alex... Und du wolltest doch sauber programmieren, nicht wahr ? ;)

Und was machst du eigendlich wenn er die Zahlen bis in dem 200 Mio Bereich in 10er Schritten braucht ? ;)

Gruß

MFC OpenGL
 
Hi.

Naja, das mit dem Rechnen sähe dann so aus:

Code:
private int Ziehezahl(int Multiplikator)
{
        Random generator = new Random();
        int Zahl = generator.Next(1, 9);
        Zahl = Zahl * Multiplikator;
        return Zahl;
}

So, die rufst dann wie folgt z.B. in nem EventHandler auf:

Code:
int GezogeneZahl = Ziehezahl(10);


MfG Alexander12
 
Alexander12 hat gesagt.:
Hi.

Ich hätt gedacht von 100-1000 oder so in hunderter-Sprüngen.
Wenns mehr ist, dann das mit dem rechnen, klar. ;)

Vllt. könnte er es uns ja sagen bis wie viel er das braucht. :-(


MfG Alexander12

Genau das ist das Problem, es ist vollkommen unerheblich in welchem Zahlenbereich er die Zahlen braucht ! Ich glaube Norbert war es, der dir mal sagte (und alle anderen hier versuchen dir das auch immer wieder einzubläuen), dass du den Code immer so schreiben sollst, das er WIEDERVERWENDBAR ist. Investiere lieber 10 min mehr in den Code, und mache ihn Dynamisch, als das du den Ruck Zuck hinballerst, aber später einfach nichts mehr davon hast. Was machst du z.B. wenn der Chef kommt, und sagt ok, haste gut gemacht, dein Programm läuft soweit super. Ich brauche das Programm in 1 Stunde für 200 Mio. Zahlen.

Was dann ? Sagst du ihm das du keinen Bock hattest, das anständig zu machen ?

Oder anderes Beispiel. Du willst einen Misch Algo schreiben, für ein Kartenspiel. Machst du den dann auch so, das der immer nur 32 Karten mischen kann ? Wohl kaum oder ? Du wirst doch wohl so schlau sein, und den für X Karten schreiben, denn es kann ja auch mal nen Rommé Blatt gemischt werden müssen, was dann ? Schreibst doch dann nicht nochmal die Komplette Routine neu.


Also merke dir das jetzt endlich mal. Dynamische Routinen ersparen dir ZEIT, nicht direkt, sondern später wenn du ein Problem mehrmals hast !

Gruß

MFC OpenGL


PS : Sorry Admins das es nicht ganz zum Thema passt, aber fand das doch wichtig mal zu sagen.
 
hallo alexander,

das mit dem muliplizieren funktioniert wunderbar - DANKE
Kannst du mir noch sagen, wie ich ich die 100-er zahlen und 10-er Zahlen gleichzeitig verwenden kann?! - denn bis jetzt kann ich mit dem Mulitplikater entweder 10 - 90 verwenden oder 1-9 - aber nicht gleichzeitig

Danke für dein Bemühen

mfg
fume
 
Hi FuME.

Ich habe das Mal so gemacht, mir ist grad nichts anderes eingefallen:

Code:
public int ZieheZahl(int Multiplikator, int Multiplikator2)
{
	int GezogeneZahl;
	Random Generator = new Random();
	int Zahl = Generator.Next(0,2);
	GezogeneZahl = Generator.Next(1,9);
	if(Zahl == 0)
	{				
		GezogeneZahl = GezogeneZahl * Multiplikator;
	}
	else
	{
		GezogeneZahl = GezogeneZahl * Multiplikator2;
	}
	return GezogeneZahl;
}

Und aufrufen dann so z.B.:

Code:
this.myTextBox.Text = ZieheZahl(10,100).ToString();


Habe versucht, das möglichst dynamisch zu machen. Wenn mir noch was besseres einfällt werd Ichs posten.

Habe das auch Mal als Beispielprojekt angehängt, habe auf die Benennung der Controls halt grad keinen Wert gelegt.


MfG Alexander12

PS. Allen nen guten Rutsch! :)
 

Anhänge

  • random.zip
    10,1 KB · Aufrufe: 14
Ich glaub echt mit TRITT EIN PFERD

Wozu braucht deine Funktion 2 Parameter ? Man, DYNAMISCH Was nun wenn er jeden Abstand von 1-1Mio haben will ? Hat die Funktion dann 1 Mio Parameter


Man... das macht man so :

Code:
public int ZieheZahl(int Multiplikator)
{
	int GezogeneZahl;
	Random Generator = new Random();
	int Zahl = Generator.Next(0,2);
	GezogeneZahl = Generator.Next(1,9);
GezogeneZahl = GezogeneZahl * Multiplikator;
return GezogeneZahl;
} 
//Beispiel
public int Kombi()
{
return ZieheZahl(10)+ZieheZahl(100);
}
//je nachdem was man braucht... und wenn du ne Kombination aus beidem brauchst, schreibste ne neue Funktion die dann die beiden Ergebnisse verbindet
this.myTextBox.Text = ZieheZahl(10).ToString();
this.myTextBox.Text = ZieheZahl(100).ToString();
 
//oder
this.myTextBox.Text = Kombi().ToString();

Ist das soooo schwer zu verstehen, alex ?

Das sind GRUNDLAGEN Kauf dir endlich nen Buch über OOP, und lern mal struktoriertes Programmieren.

Langsam wirds echt rund hier...

Gruß

MFC OpenGL
 
Zuletzt bearbeitet:
Zurück