2011-01-31 8 views
1

私は25枚の画像のグリッドビューを作成する必要のあるiphoneアプリを作成しています。それが正常に動作しなくグリッドビューで40個の画像のうちランダムに25個の画像を表示するには

for(int i=0; i<25; i++) 
    { 
    if(i>0) 
    { 
     if(i%5==0) 
     { 
      xaxis=30; 
      yaxis=yaxis+35; 
     } 
    } 
     iconButton[i]=[UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     iconButton[i].frame=CGRectMake(xaxis, yaxis, 50, 30); 
     [iconButton[i] setBackgroundImage:[iconArray objectAtIndex:i] forState:UIControlStateNormal]; 
     [iconButton[i] addTarget:self action:@selector(changeImage:) forControlEvents:UIControlEventTouchUpInside]; 
     [self.view addSubview:iconButton[i]]; 
     xaxis=xaxis+55; 
    } 

Iは、全40枚の画像を持っている:私は、アレイ25枚の画像を撮影し、以下のコードで、x軸とy軸の大きさを変えることによってループのため使用してそれらを表示することによって、そのやって 私と私はアプリケーションが起動するたびに、その25個の画像の中から25個の画像をランダムに選ぶ必要があります。

どうすればいいですか、私を助けてください。

多くの場合、お手数をおかけしていただきありがとうございます。 よろしく iPhoneDeveloper11

答えて

2

はそこからあなたは、本質的に画像の順番をランダム化してから最初の25 Iドン」を選択したい画像に

+0

多くのおかげであなたは歓迎されている – User

+0

それはあなたの問題 – KingofBliss

+0

は答えを受け入れるようにしてくださいこの方法は、同じイメージを複数回表示することがあります。 – KingofBliss

0

を選択し、40に0の間の乱数を与えますtはあなたのデータ構造を配置しているかを正確に知っているが、ここでは整数と例です。

for (int x = 39; x > 0; x--) 
{ 
    int tmp = element[x]; 
    int newLoc = random()%(x+1); 
    element[x] = element[newLoc]; 
    element[newLoc] = tmp; 
} 

私はelementはあなたがアップミックスしたいあなたの値が含まれていることを仮定しています。

0
  1. は、0と40の間の乱数を作成するセットを作成し、セットに入れて
  2. チェックセットサイズ
  3. セットサイズが25未満の場合、2
  4. 変換に進みます。配列に設定

これはこれを行う1つの方法ですが、確かにより良い、より速い方法がありますが、簡単にしたい場合は、このようなものかpeoroの提案を使用してください。

5

41個の数字(0-40)の配列を作成し、部分Fisher-Yates shuffle を使用してシャッフルし、配列の最初の25個の要素を使用します。

擬似コード(ランダム(x)は、x包括的に0からの乱数を返す):あなたの助けのための

array = [0, 1, 2, ..., 40] 
for i in 0, 1, ..., 24 do 
    swap array[i], array[i + random(40 - i)] 
truncate array to 25 elements. 
+0

シンプルで効果的です。素敵な!! –

関連する問題