2016-12-16 3 views
0

현재 제가 만들고있는 게임에 대해 한 번에 두 개의 임의의 (전체) 숫자를 생성하려고합니다. 무작위로 시작 및 끝 타일을 생성하려고합니다. 이 작업을 수행 할 때 임의로 생성 된 두 개의 숫자는 항상 동일합니다. 이것은 아마도 그들이 함께 가까이 계산 된 호출되고 있기 때문에 이해하지만, 난 두 개의 다른 난수를 얻는 방법에 대한 정보를 찾을 수 없습니다. 내 코드는 매우 간단합니다 (C#).Unity3d가 여러 난수를 생성합니다.

float startTile = Mathf.Ceil(Random.Range(1.0f, 8.0f)); 
float endTile = Mathf.Ceil(Random.Range(1.0f, 8.0f)); 

감사합니다.

편집

이이 오래된 질문에 대한 대답이었다 중복 질문으로 표시되었다

Random rand = new Random(); 
int t = rand.next(x,x2); 

내가 잘못된 일을하고 있어요 않는 한, 나는 심지어를 사용할 수 없습니다입니다 rand.Next (x, x1)는 단일성 안에서 기능합니다.

enter image description here

실제 코드 :

private void SpawnStartandEndTiles() 
{ 
    Random rand = new Random(); 
    int t = rand.N //<Next is not an option 

    //Other misc. Code that uses the random numbers 
} 

난 그냥 랜덤 함수의 작동 방법에 뭔가를 받고 있지 않다 있으면 알려 주시기 바랍니다.

고마워요.

+0

의 크기에 영향을주지 않는 방법을 보여줍니다 당신은'랜드'선언했습니다. –

+0

Unity의 [Random.Range'] (https://docs.unity3d.com/ScriptReference/Random.Range.html)를 사용하고 .NET의 Random 클래스를 사용하지 않아서 이것이 중복이라고 생각하지 않습니다. Unity를 모르지만 정수 시드 값을 사용하여 호출 할 수있는 ['Random.InitState'] (https://docs.unity3d.com/ScriptReference/Random.InitState.html) 메서드가 있으므로 잠재적 해결책은'Random.Range' 호출 사이에'Random.InitState (new System.Random(). Next())'를 호출하는 것입니다. 그러나 .NET의 무작위 시드를 생성하여 임의의 시드를 생성하는 임의의 시드를 사용하면 다른 난수가 생성 될 수 있습니다. 아마도 .NET의 임의 항목을 단독으로 사용할 수 있습니다. – Quantic

+2

당신이'System.Random'이 아닌'UnityEngine.Random'을 사용하고 있음을 명확히하는 것은 질문을 다시 열어 놓는 데 도움이 될 수 있습니다. – Quantic

답변

0

우선 System 네임 스페이스 (*)에있는 대부분의 클래스를 사용하면 게임의 크기가 크게 증가하므로 System.Random을 사용하지 마십시오. 대신 사용하십시오 UnityEngine.Random

난수는 항상 시드를 사용하여 생성됩니다. 특정 시드가 주어지면 난수 시퀀스는 항상 동일합니다. 당신은 계산 된 무작위가 정말로 무작위 적이라고 말할 수 있습니다.

Random.seed을 시간에 따라 값을 설정하면 Random.Range이 실제 무작위에 가까운 숫자를 생성합니다. 예를 들어

:

Random.seed = System.DateTime.Now.Millisecond; 
//... 
float startTile = Mathf.Ceil(Random.Range(1.0f, 8.0f)); 
float endTile = Mathf.Ceil(Random.Range(1.0f, 8.0f)); 

(*)이이가 mscorlib.dll에 따라서 당신의 업데이트에서 게임

System.Collection.* 
System.Collection.Generic.* 
System.IO.* 
+0

Unity의 내장 Random 클래스에는 [seed 속성 또는 Range 메소드] (https://docs.unity3d.com/ScriptReference/Random.html)가 없습니다. – Draco18s

관련 문제