Random
-
Kann man den Integer nicht einfach einem unsigned integer zuweisen um das gewünschte Ergebnis durch die Umwandlung zu bekommen?
Ansonsten addier doch einfach 2.147.483.648 hinzu.
-
HighLigerBiMBam schrieb:
System.Random rnd = new System.Random();
int zahl = rnd.next(1,100);Reicht das?
Hehe, leider nicht :p
SeppJ schrieb:
Kann man den Integer nicht einfach einem unsigned integer zuweisen um das gewünschte Ergebnis durch die Umwandlung zu bekommen?
Ansonsten addier doch einfach 2.147.483.648 hinzu.
Random rnd = new Random(); int number = rnd.Next();
Next() gibt nur int Zahlen zurück, es gibt keine unsigned int Version, wodurch ich z.B. keine Zahl im 3 milliarden Bereich generieren kann. Das ich einfach 2.147.483.648 dazu addiere, hatte ich auch zuerst im Sinn, aber wenn z.B. die -5 generiert wird, kann ich somit z.B. nicht die 53.500 generieren, da ich dann 2.147.483.643 rausbekomme.
-
C_Sharp schrieb:
meine Frage bezieht sich eher auf C#, da aber um die Uhrzeit kaum jemand antwortet, poste ich sie mal hier rein, ...
Das sehe ich als C# Moderator ja geradezu als Frechheit! Unverschämtheit! Unglaublich! Ich verlange eine Steinigung, Teerung und Federung ... Ich sollte am besten gleich gar nicht helfen ... unglaublich ...
Aber ich will mal nicht so sein
Ganz einfach geht das so:Random random = new Random(); uint number = (uint)(random.NextDouble() * uint.MaxValue);
Grüssli
-
Dieser Thread wurde von Moderator/in volkard aus dem Forum C++ (auch C++0x) in das Forum C# und .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Danke volkard!
@C_Sharp,
Willkommen in meinem ReichTeuflische Grüssli
-
Dravere schrieb:
Aber ich will mal nicht so sein
Ganz einfach geht das so:Random random = new Random(); uint number = (uint)(random.NextDouble() * uint.MaxValue);
Danke schön, hat mir sehr geholfen
-
Leider kann ich nicht editieren.
@Dravere:
Gäbe es jetzt vielleicht noch eine Möglichkeit das einzugrenzen?
-
C_Sharp schrieb:
Gäbe es jetzt vielleicht noch eine Möglichkeit das einzugrenzen?
Ja, mit dem Modulo Operator.
Random random = new Random(); uint upperLimit = 3000000000; uint number = (uint)(random.NextDouble() * uint.MaxValue) % upperLimit;
So sind alle Zahlen zwischen 0 und 3000000000 exklusiv. Falls du die Untergrenze nach oben korrigieren willst, musst du halt etwas dazurechnen und dies vom
upperLimit
abziehen.Grüssli
-
Oder schlichter
Random random = new Random(); uint upperLimit = 3000000000; uint number = (uint)(random.NextDouble() * upperLimit);
-
Dravere schrieb:
Falls du die Untergrenze nach oben korrigieren willst, musst du halt etwas dazurechnen und dies vom
upperLimit
abziehen.Meinst du so?
uint upperlimit = 300; uint lowerlimit = 5; uint number = (uint)(random.NextDouble() * uint.MaxValue) % upperlimit - lowerlimit;
-
Ich denke, eher
uint upperlimit = 300; uint lowerlimit = 5; uint number = (uint)(random.NextDouble() * uint.MaxValue) % (upperlimit - lowerlimit) + lowerlimit;
oder
uint upperlimit = 300; uint lowerlimit = 5; uint number = (uint)(random.NextDouble() * (upperlimit - lowerlimit)) + lowerlimit;
-
@volkard,
lol, stimmt. Eindeutig Zeit ins Nest zu gehen@C_Sharp,
Mit dem was Volkard eingeführt hat und zusätzlich noch mit Erweiterungsmethoden, könnte man dies so machen:static class RandomExtension { public static uint NextUInt(this Random random, uint lower, uint upper) { return (uint)(random.NextDouble() * (upper - lower)) + lower; } } // ... Random random = new Random(); uint number = random.NextUInt(1000, 5000);
Grüssli
-
Funktioniert 1A, vielen dank
-
Mal noch nen anderer Gedanke:
Random rnd = new Random(); uint number = rnd.Next() + rnd.Next();
MfG SWW13
-
Oder man nimmt NextBytes() füllt sich damit nen 4 Byte großes Array und bastelt sich damit den uint zusammen
-
SWW13 schrieb:
Mal noch nen anderer Gedanke:
Random rnd = new Random(); uint number = rnd.Next() + rnd.Next();
MfG SWW13
Das geht so nicht! Würfel mal mit 2 6er Würfeln und siehe was passiert... Die Wharscheinlichkeit dass die 7 fällt ist höher als die 2. Selbes Prinzip bei deiner These.