generating random values in iPhone

2019-01-26 22:56发布

I have used rand(). But it gives a specific value even after I restart application.

I have implemented following in my application.

- (void)viewDidLoad {
[super viewDidLoad];
int x,y;

x=random() % 480; y=random() % 300;

lblT.center=CGPointMake(x,y); // my label lblT
}

Try to implement in your application, and launch application. After restarting application, you will find that label will be on specific value.

6条回答
干净又极端
2楼-- · 2019-01-26 23:04

Use the following line before random()

srand(time(NULL));

查看更多
相关推荐>>
3楼-- · 2019-01-26 23:04

I would do it like this:

landscape:

- (void)viewDidLoad {
[super viewDidLoad];


int x = arc4random()%480;
int y = arc4random()%320;

lblT.center=CGPointMake(x,y);
}

not landscape:

 - (void)viewDidLoad {
    [super viewDidLoad];


    int x = arc4random()%320;
    int y = arc4random()%480;

    lblT.center=CGPointMake(x,y);
    }
查看更多
不美不萌又怎样
4楼-- · 2019-01-26 23:08

arc4random() is a built-in function that does not require seeding (and so therefore does not produce predictable sequences that can be generated by using a seed), and it conveniently returns integers. I never use anything else.

查看更多
对你真心纯属浪费
5楼-- · 2019-01-26 23:13

Since you are using random() and not rand() you should seed the random generator with this bit of code...

srandomdev();

查看更多
地球回转人心会变
6楼-- · 2019-01-26 23:19

use this code, only for Integer random values

#define random(min,max) ((arc4random() % (max-min+1)) + min)

testing

for (int i = 0; i < 500; i++) {
    NSLog(@"rand is %d", random(-100,100));
}
查看更多
相关推荐>>
7楼-- · 2019-01-26 23:26

Random number generators in software will actually give PSEUDORANDOM sequences of values.

Unless you seed the random number generator with a value from a truly random event, you will always get the same sequence each time you use the software.

I don't know about your software, but it doesn't look like you're seeding the random number generator, Gcamp is probably on the right track.

查看更多
登录 后发表回答