Відповіді:
Ви можете спробувати
Random r = new Random();
int rInt = r.Next(0, 100); //for ints
int range = 100;
double rDouble = r.NextDouble()* range; //for doubles
Погляньте
Випадковий клас , метод Random.Next (Int32 , Int32) та метод Random.NextDouble
Random()
використовує насіння, залежне від часу, але писати це явно краще для читабельності.
Спробуйте нижче код.
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
Щось на зразок:
var rnd = new Random(DateTime.Now.Millisecond);
int ticks = rnd.Next(0, 3000);
DateTime.Now.Millisecond
?
Random
вже засіяне системним значенням і Millisecond
є лише числом від 0 до 999. Якби ця пара рядків завжди була разом у коді, було б лише 1000 можливих значень rnd.Next
завдяки тому, що насіння щоразу скидається. Це ж насіння, однакове випадкове число. Я б покинув ручне насіння.
Environment.TickCount
.
Використання:
Random r = new Random();
int x= r.Next(10);//Max range
Для майбутніх читачів, якщо вам потрібно випадкове число в діапазоні, використовуйте наступний код:
public double GetRandomNumberInRange(double minNumber, double maxNumber)
{
return new Random().NextDouble() * (maxNumber - minNumber) + minNumber;
}
return new Random().NextDouble() * (maxNumber - minNumber) + minNumber;
Крім випадкового класу , який генерує цілі числа та подвійні, врахуйте:
Питання про переповнення стека Генерація (псевдо) випадкових обмежених значень (U) Int64 та Десяткової
Ось оновлена версія з відповіді Даррелка . Він реалізується за допомогою методів розширення C # . Він не виділяє пам'ять ( новий Random () ) щоразу, коли цей метод викликається.
public static class RandomExtensionMethods
{
public static double NextDoubleRange(this System.Random random, double minNumber, double maxNumber)
{
return random.NextDouble() * (maxNumber - minNumber) + minNumber;
}
}
Використання (обов’язково імпортуйте простір імен, що містять клас 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;