2012-04-28 24 views
-1

私は初心者で、iOSからWP7に移行しました。forループを使用して要素を配列にロードする方法は? C#

私は配列に格納したい乱数列を生成しています。 iOSでこのようになった

for(int i=0; i < num; i++) { 

     int rand = arc4random_uniform(70); 

     if([rand_array containsObject:[NSNumber numberWithInt:rand]]) { 

      i--; 

     } 

私は検索しましたが、これは私が質問することができる場所だと思っています。親切に私を助けてください。

+0

これが建設的な質問であるためには、ループが何をしているのかを説明し、特定の問題について質問する必要があります。多分あなたのコードは不完全ですが、私はそれが何かを把握することはできません。 – Gabe

+4

「私は初心者ですが、iOSからWP7に移行しました」 - あなた自身の好意を持ち、コンソールアプリケーションを使って理想的にはC#*ファースト*を学びます。 UI。 –

+0

あなたはこれを見たことがありますか:http://stackoverflow.com/questions/2351308/random-number-generator-in-c-sharp-unique-values –

答えて

2
int min = 1; 
int max = 4; 
int num = 3; 
Random r = new Random(); 
Int[] ar ; 
ar = new Int[num]; // Creates array with 3 palces {ar[0],ar[1],ar[2]) 
for(i = 0;i =< num - 1;i++) { 
ar[i] = r.Next(min,max); // generate random number between 1-4 (include 1 & 4) 
} 

私は、これは動作するはずです(または私はあなたを理解didntは)だと思う:あなたはだけは本当にあなたがこのような何かをしたかったので、もし、番号を生成するランダムクラスのインスタンスを1つ使用する必要があります。 幸運=]

+0

ありがとうたくさん...これは私のために働いた! – Xander

1

あなたのコードには意味がありません。私はリストを使用します。

for(int i=0; i < num; i++) 
    { 
    int rand = arc4random_uniform(70);//hope you know what you did here, I don't 

    if(yourList.Contains(rand)) 
     i--; 
    else 
     yourList.Add(rand); 
    } 

リストに乱数が含まれていない場合は追加します。それ以外の場合はそれが繰り返されます。 C#ので

+0

ansのおかげで、それは私のprojで私を助けました – Xander

1

はこのような何かを:

List<int> numbers = new List<int>(); 

for (int i = 0; i < num, i++) { 

    int rand = GetARandomNumber(); 
    if (!numbers.Contains(rand)) { 
     numbers.Add(rand); 
    } else { 
     i--; 
    } 

} 

あなたはまた、おそらく、whileループにこれを変換するために、うまくやってたい:それは簡単です

List<int> numbers = new List<int>(); 

while (numbers.Count < num) { 

    int rand = GetARandomNumber(); 
    if (!numbers.Contains(rand)) { 
     numbers.Add(rand); 
    } 

} 
+0

ansのおかげで... – Xander

1

、本当に!コードの直接ポートは次のようになります。

List<int> rand_array = new List<int>(); 


for(int i = 0; i < num; i++) 
{ 
    int rand = RandomHelper.GetInt(0, 70); 
    if(rand_array.Contains(rand)) 
    { 
     i--; 
     continue; 
    } 

    rand_array.Add(rand); 
} 

C#で乱数を生成するには、「ランダム」と呼ばれるクラスがあります。

static class RandomHelper 
{ 
    static Random rng = new Random(); // Seed it if you need the same sequence of random numbers 

    public static int GetInt(int min, int max) 
    { 
     return rng.Next(min, max); 
    } 
} 
+0

あなたのランダムなクラスの変数に静的を追加します。 –

+0

助けてくれてありがとう、私は今基礎を見てみる必要があります:( – Xander

2

Enumerable.Range(1, 70)は、1から70までの数字を生成します。 次に、それらをカードのデッキのようにシャッフルします。

int[] randomNumbers = Enumerable.Range(1, 70).Shuffle(new Random()).ToArray(); 

これは、同じフォルダ内の別のクラスにある必要があります。

public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> source, Random random) 
{ 
    T[] list = source.ToArray(); 
    int count = list.Length; 

    while (count > 1) 
    { 
     int index = random.Next(count--); 
     yield return list[index]; 
     list[index] = list[count]; 
    } 
    yield return list[0]; 
} 

これはあなたが望むものですか?

+0

親指を上げます...ありがとうこれは詳細なバージョンです。 – Xander

関連する問題