XCODE - 生成随机数(1到16之间)并将结果输出到不同的16 UILAbel(无重复数字)

时间:2014-05-26 09:38:08

标签: random

请你能帮助我!

我有16个UIlabels(label,label1,label2,label3)的代码......

enter code here

>int randomText = rand() %16;
>switch (randomText) {
>   case 0:
>        label.text = @"1";
>        break;
>    case 1:
>        label.text = @"2";
>        break;
>    case 2:
>        label.text = @"3";
>        break;
>    case 3:
>        label.text = @"4";
>        break;
>    case 4:
>        label.text = @"5";
>        break;
>    ......\

我们需要IBACTION生成一个随机数(exampple_range在1到16之间),并将结果Outpout到项目XCode中的不同16个UILAbels,不要在标签之间重复,再重新开始时不重复。

-16 UILABELS随机数。 - 不要在16 UILAbels中重复编号。

我们需要(IBACTION)或Void的示例:

>Label_1=5
>Label_2=9
>Label_3=2
>Label_4=14
>Label_5=1
>Label_6=15
>Label_7=16
>Label_8=3
>Label_9=4
>Label_10=6
>Label_11=12
>Label_12=8
>Label_13=13
>Label_14=9
>Label_15=16
>Label_16=15

1 个答案:

答案 0 :(得分:1)

不是生成随机数,而是使用数字/字符串随机播放数组。

NSArray *vals = @[@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"10", @"11", @"12", @"13", @"14", @"15", @"16"];
NSUInteger count = [vals count];
for (NSUInteger i = 0; i < count; ++i) {
    NSInteger nElements = count - i;
    NSInteger n = arc4random_uniform(nElements) + i;
    [vals exchangeObjectAtIndex:i withObjectAtIndex:n];
}

然后,为每个标签设置其值:

label.text = vals[index];

作为建议,将标签设置为自己的数组,因此在对数组进行洗牌之后,您可以轻松地在一个循环中设置值。

NSUInteger vCount = [vals count];
NSUInteger lCount = [labels count];
NSUInteger count = MIN(vCount, lCount);
for (NSUInteger i = 0; i <= count; i++) {
    UILabel *lbl = labels[i];
    lbl.text = vals[i];
}

希望它有所帮助。