Ответы:
Можешь попробовать
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 и Decimal
Вот обновленная версия от Darrelk ответа . Это реализовано с использованием методов расширения C # . Он не выделяет память ( new 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;