답변:
당신은 시도 할 수 있습니다
Random r = new Random();
int rInt = r.Next(0, 100); //for ints
int range = 100;
double rDouble = r.NextDouble()* range; //for doubles
보세요
Random 클래스 , Random.Next 메서드 (Int32, Int32) 및 Random.NextDouble 메서드
Random()
시간 종속 시드를 사용하지만 명시 적으로 작성하면 가독성이 향상됩니다.
다음과 같은 것 :
var rnd = new Random(DateTime.Now.Millisecond);
int ticks = rnd.Next(0, 3000);
DateTime.Now.Millisecond
?
Random
이미 시스템 값으로 시드 Millisecond
되고 0과 999 사이의 숫자 일뿐입니다.이 행 쌍이 항상 코드로 함께 묶인 경우 rnd.Next
매번 시드가 재설정되므로 1000 개의 값만 가능합니다 . 같은 시드, 같은 난수. 수동 시드는 그대로 두겠습니다.
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;
정수와 복식을 생성 하는 Random Class 외에도 다음을 고려하십시오.
다음은 Darrelk answer 에서 업데이트 된 버전입니다 . 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;