2011-01-31 193 views
1

我创建一个iPhone应用程序中,我需要创建25张图片的网格视图25个图像随机出40个图像。 我做,通过采取在阵列25倍的图像,并通过改变用于x轴和y轴的尺寸在下面的代码通过使用用于循环显示它们:要显示网格视图

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

它工作正常,但我有总共40个图像与我和我希望每次应用程序启动时它应该从25个图像中随机选择25个图像。

我会怎么做,请帮帮我。

许多在此先感谢您的帮助。 问候 iPhoneDeveloper11

回答

2

给出0之间的随机数到40,从你选择的图像

+0

非常感谢您的帮助 – User 2011-01-31 05:27:38

+0

欢迎您 – KingofBliss 2011-01-31 05:54:51

0

你基本上要随机图像的顺序,然后选择第25我不知道究竟你是如何安排你的数据结构,但在这里是一个整数,例如:

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. 创建一套
  2. 创建0和40之间的随机数,并把它放在一套
  3. 检查组大小
  4. 如果设置的大小小于25,则转到步骤2
  5. 转换设置为阵列

这是一种方法来做到这一点,当然有更好更快的方法,但如果你想要简单,使用这样的东西或peoro的建议。

5

创建一个包含41个数字(0-40)的数组,使用部分Fisher-Yates shuffle 对它们进行洗牌并使用数组的前25个元素。

伪码(随机(X)从0返回一个随机数为x含):

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.