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.
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.
Use the following line before random()
srand(time(NULL));
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.
Since you are using random() and not rand() you should seed the random generator with this bit of code...
srandomdev();
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);
}
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));
}