가능한 중복은 :
Random number generator only generating one random number디버거를 사용하여 코드를 실행하는 경우에만 코드가 올바르게 실행됩니까?
나는 조금이 몇 분 전으로 당황했다. (시스템 시간 기준)
public blockType generateRandomBlock()
{
Random random = new Random();
int makeBlockOfType = random.Next(0, 100);
blockType t = blockType.normal;
if (makeBlockOfType <= 80 && makeBlockOfType >= 60)
{
t = blockType.blue;
}
else if (makeBlockOfType > 80 && makeBlockOfType <= 95)
{
t = blockType.orange;
}
else if (makeBlockOfType > 95 && makeBlockOfType <= 100)
{
t = blockType.green;
}
return t;
}
상당히 간단 그것은 임의로 생성 된 번호에 기초하여 값을 복귀 enum
: I는 다음의 코드를 갖는다. 불행히도 어떤 이상한 이유가 있기는하지만 모든 블록이 하나의 색이나 다른 블록으로 구성되어 있어도 모든 블록이 게임에 적용됩니다. 그러나 디버거를 사용하여 단계를 밟은 후 일부 실행 후에 결과를 확인하면 블록이 현재 제공되는 기회에 따라 여러 색상으로 표시되는 것을 볼 수 있습니다. 나는 이것이 왜 일어나고 있는지에 대해 약간 혼란 스럽다.
이 경우 Microsoft 용 대신 Mono 컴파일러를 사용하는 MonoGame을 사용하고 있습니다. 이것이 문제가 될 수 있습니까? 나는이 코드를 생성자에 인라인으로 넣으려고 시도했지만 어디에서 호출되는지는 같지만 동일한 결과를 얻고있다. (필자는 컴파일러가 코드를 인라인한다고 추측한다.)
Visual Studio를 별도로 다시 시작하려고했지만 빌드를 실행하지 마십시오. 변경 사항 없음.
모든 제안과 도움을 받으실 수 있습니다.
시도를하는 방법에서 임의의 생성을 이동, 그 도움이 될 것입니다. –
'새로운 Random()'시드는 시간을 사용하는데 몇 밀리 초 동안 일정하게 유지됩니다. – CodesInChaos
디버그에서 작동하는 이유는 호출 사이에 시간이 있기 때문에 무작위가 실제로 다른 종자를 얻습니다. – Archy