Odpowiedzi:
Możesz spróbować
Random r = new Random();
int rInt = r.Next(0, 100); //for ints
int range = 100;
double rDouble = r.NextDouble()* range; //for doubles
Spójrz na
Klasa losowa , metoda Random.Next (Int32, Int32) i metoda Random.NextDouble
Random()
wykorzystuje ziarno zależne od czasu, ale zapisanie tego wprost jest lepsze dla czytelności.
Wypróbuj poniższy kod.
Random rnd = new Random();
int month = rnd.Next(1, 13); // creates a number between 1 and 12
int dice = rnd.Next(1, 7); // creates a number between 1 and 6
int card = rnd.Next(52); // creates a number between 0 and 51
Coś jak:
var rnd = new Random(DateTime.Now.Millisecond);
int ticks = rnd.Next(0, 3000);
DateTime.Now.Millisecond
?
Random
jest już zaszczepiony wartością systemową i Millisecond
jest tylko liczbą z przedziału od 0 do 999. Gdyby ta para linii była zawsze razem w kodzie, istniałoby tylko 1000 możliwych wartości z rnd.Next
powodu resetu za każdym razem. To samo ziarno, ta sama liczba losowa. Odstawiłbym ręczne nasiona.
Environment.TickCount
.
Posługiwać się:
Random r = new Random();
int x= r.Next(10);//Max range
Dla przyszłych czytelników, jeśli chcesz losową liczbę w zakresie, użyj następującego kodu:
public double GetRandomNumberInRange(double minNumber, double maxNumber)
{
return new Random().NextDouble() * (maxNumber - minNumber) + minNumber;
}
return new Random().NextDouble() * (maxNumber - minNumber) + minNumber;
Oprócz klasy losowej , która generuje liczby całkowite i liczby podwójne, rozważ:
Pytanie o przepełnienie stosu Generowanie (pseudo) losowo ograniczonych wartości (U) Int64 i dziesiętnych
Oto zaktualizowana wersja z odpowiedzi Darrelka . Jest implementowany przy użyciu metod rozszerzenia C # . Nie przydziela pamięci ( nowy Random () ) za każdym razem, gdy wywoływana jest ta metoda.
public static class RandomExtensionMethods
{
public static double NextDoubleRange(this System.Random random, double minNumber, double maxNumber)
{
return random.NextDouble() * (maxNumber - minNumber) + minNumber;
}
}
Sposób użycia (pamiętaj o zaimportowaniu przestrzeni nazw zawierającej klasę RandomExtensionMethods):
var random = new System.Random();
double rx = random.NextDoubleRange(0.0, 1.0);
double ry = random.NextDoubleRange(0.0f, 1.0f);
double vx = random.NextDoubleRange(-0.005f, 0.005f);
double vy = random.NextDoubleRange(-0.005f, 0.005f);
double rDouble = (r.NextDouble()*2)-1.0;