Respostas:
Podes tentar
Random r = new Random();
int rInt = r.Next(0, 100); //for ints
int range = 100;
double rDouble = r.NextDouble()* range; //for doubles
Dê uma olhada em
Classe aleatória , método Random.Next (Int32, Int32) e método Random.NextDouble
Random()
usa uma semente dependente do tempo, mas escrever isso explicitamente é melhor para facilitar a leitura.
Experimente o código abaixo.
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
Algo como:
var rnd = new Random(DateTime.Now.Millisecond);
int ticks = rnd.Next(0, 3000);
DateTime.Now.Millisecond
?
Random
já foi propagado com um valor do sistema e Millisecond
é apenas um número entre 0 e 999. Se esse par de linhas estivesse sempre junto no código, haveria apenas 1000 valores possíveis rnd.Next
devido à redefinição da propagação a cada vez. A mesma semente entra, o mesmo número aleatório sai. Eu deixaria a semente manual de fora.
Environment.TickCount
.
Usar:
Random r = new Random();
int x= r.Next(10);//Max range
Para futuros leitores, se você quiser um número aleatório em um intervalo, use o seguinte código:
public double GetRandomNumberInRange(double minNumber, double maxNumber)
{
return new Random().NextDouble() * (maxNumber - minNumber) + minNumber;
}
return new Random().NextDouble() * (maxNumber - minNumber) + minNumber;
Além da Classe Aleatória , que gera números inteiros e duplos, considere:
Pergunta de estouro de pilha Geração de (pseudo) valores aleatórios restritos de (U) Int64 e Decimal
Aqui está a versão atualizada da resposta Darrelk . É implementado usando métodos de extensão C # . Ele não aloca memória ( new Random () ) toda vez que esse método é chamado.
public static class RandomExtensionMethods
{
public static double NextDoubleRange(this System.Random random, double minNumber, double maxNumber)
{
return random.NextDouble() * (maxNumber - minNumber) + minNumber;
}
}
Uso (certifique-se de importar o espaço para nome que contém a classe 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;