2016-12-16 6 views
0

現在、私が作っているゲームで、一度に2つの乱数を生成しようとしています。私はランダムに開始と終了のタイルを生成しようとしています。私はこれを行うとき、私の2つのランダムに生成された数字は常に同じです。これはおそらく、彼らは一緒に閉じて計算されて呼び出されている理解していますが、私は2つの異なる乱数を取得する方法で動作する情報を見つけることができません。私のコードは非常にシンプルです(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)は1の範囲内で機能します。

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

の大きさへの影響はありません、どのように表示されあなたは 'rand'を宣言しました。 –

+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.Randomを使用しないでください。Systemの大部分のクラスを使用すると、ゲームのサイズが大幅に増加するためです。代わりに使用する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クラスには、[種別プロパティまたはRangeメソッド](https://docs.unity3d.com/ScriptReference/Random.html)が含まれていません。 – Draco18s