-1

iOSからWP7に移行した初心者です。

配列に格納したい乱数系列を生成しています。iOSではこうだった

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

        int rand = arc4random_uniform(70);

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

            i--;

        }

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

4

5 に答える 5

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)
}

私はこれがうまくいくはずだと思います(または私はあなたを理解していませんでした)。幸運=]

于 2012-04-28T17:47:56.643 に答える
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);
    }

リストに乱数が含まれていない場合は追加され、そうでない場合は単に繰り返されます。

于 2012-04-28T17:44:35.100 に答える
1

C# では、次のようにします。

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 );
    }

}
于 2012-04-28T17:44:49.060 に答える
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# で乱数を生成するには、"Random" と呼ばれる適切なクラスがあります。実際には Random クラスのインスタンスを 1 つだけ使用して数値を生成する必要があるため、次のようなものが必要な場合:

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);
    }
}
于 2012-04-28T17:44:51.353 に答える