0

UIScrollView在我的代码中,我以这种方式旋转:

[carousel scrollByNumberOfItems:-35 duration:10.7550f];

[NSTimer scheduledTimerWithTimeInterval:10.7550f 
                                 target:self
                               selector:@selector(randomFinal)
                               userInfo:nil
                                repeats:NO]; 

而在这部分,scrollView 停止后,它会做一个随机的移动,UP 或 Down:

-(void)randomFinal {

    randomBut = arc4random()%5;

    if (randomBut == 0){
 [carousel scrollByNumberOfItems: -1 duration: 4.50f];  
    } else if ( randomBut == 1){
 [carousel scrollByNumberOfItems: 1 duration: 4.50f];  
    } else if (randomBut == 2) {
 [carousel scrollByNumberOfItems: 1 duration: 5.0f];
    } else if (randomBut == 3) {
 [carousel scrollByNumberOfItems: -1 duration: 5.0f];
   } else if (randomBut == 4) {
 [carousel scrollByNumberOfItems:0 duration:0];
    }
}

我需要的是让这randomFinal部分以 30% 的概率发生。我该怎么做?谢谢你。

4

2 回答 2

0

好吧,您可以编写如下内容:

int shouldCallFinal = arc4random()%100;

if(shouldCallFinal <= 70)
{
[NSTimer scheduledTimerWithTimeInterval:10.7550f 
                                 target:self
                               selector:@selector(randomFinal)
                               userInfo:nil
                                repeats:NO]; 
}
于 2012-07-01T14:15:07.140 回答
0

你可以试试这个:

// arc4random_uniform() returns uniformly distributed random number < than upper_bound.
randomNumber = arc4random_uniform(100 + 1);
if(randomNumber <= 30)
    do something;

调用 arc4random_uniform() 产生的随机数应该是 <= 30, 30% 的时间。

于 2012-07-01T14:18:11.063 回答