Reputation: 24810
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.
Upvotes: 2
Views: 10968
Reputation: 61
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));
}
Upvotes: 1
Reputation: 17
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);
}
Upvotes: 1
Reputation: 2498
Since you are using random() and not rand() you should seed the random generator with this bit of code...
srandomdev();
Upvotes: 1
Reputation: 243146
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.
Upvotes: 13
Reputation: 15118
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.
Upvotes: 2