2016-05-08 27 views
0

私は長い間C++を使用してきました。さて、Unity3DでC#を使い始めました。私はほぼ完成してアプリを完成させていますが、Unity C#で動作するintジェネレータを見つけることができません。 私は次のことを試してみた:Unity3D C#ランダムIntジェネレータ

r = Random.Range(min, max) 

Random rand = new Random(); 
r = rand.next(min, max) 

の両方が動作しませんでした。私はC++であなたが知っている:

r = rand() % max + min; 

乱数が必要な場合。 Unity C#の場合はどうですか? コード:

EDITr = rand() % max + minはあなたにC++でのminmax間の乱数を与えるだろうと同じよう

C++から来る
using UnityEngine; 
using System.Collections; 

public class STarget : MonoBehaviour { 
public GameObject inter; 
int rand; 
public GameObject TS1; 
public GameObject TS2; 
public GameObject TS3; 
public GameObject TS4; 
public GameObject TS5; 
void Update() { 
    rand = Random.Range(1, 6); 
} 
public void GameRun() { 
    switch (rand){ 
     case 1: 
      inter = TS1; 
      break; 
     case 2: 
      inter = TS2; 
      break; 
     case 3: 
      inter = TS3; 
      break; 
     case 4: 
      inter = TS4; 
      break; 
     case 5: 
      inter = TS5; 
      break; 
    } 
    Game.TargetSingle(inter); 
    } 
} 
+6

説明「機能しませんでした」、例外がありますか?期待していないところに結果がありますか?私たちは、あなたが問題を説明しなければ、あなたが問題を抱き締めるのを助けることはできません。 –

+1

'rand.Next(min、max)'がチェックアウトします。あなたが[新しい同一のシードされたランダムの穴をループで埋める]に落ちないようにしてください(http://stackoverflow.com/questions/767999/random-number-generator-only-generating-one-random-number ) –

+0

'Random.Range(min、max)'も動作するはずです。あなたが望むものに依存します。 –

答えて

3

、それはC#で異なっています。まず、Random.Range(min, max)を使用して、Unityで乱数を取得します。本当に理解する

何かが、それはC++でないようRandom.Range(min, max)ないが本当にあなたにminmax間からランダムに与えることです。提供されているminmaxが整数の場合、min(max-1)の間の乱数を返します。

ですから、1から5に乱数を必要とするとき、最大(5)に1を追加するか、41から数字だけを取得します。 Random.Range(2, 5+1)またはRandom.Range(min, max+1)です。それはおそらくあなたの問題です。

+0

'float'を渡すと最大値が含まれることに注意してください。 –

+0

@ gjttt1私はそれを言ったと思う。 「指定された最小値と最大値が整数の場合はmin(max-1)から**整数**までの乱数を返します」 – Programmer

+0

ああ、私はそれをあまりにも速く読む必要があります!私の間違い –

関連する問題