La funzione random() in Cocos2d

cocos2d Soft! Commenta l'articolo

dice-main_Full
E’ la funzione più utilizza ed anche la più complessa, sto parlando della funzione che gerera in maniera pseudo causale dei numeri, la funzione random().
Ogni linguaggio ne ha una e per cocos2d la definizione è CCRANDOM_0_1() oppure CCRANDOM_MINUS1_1(), la prima genera un numero casuale tra 0 e 1 mentre l’altra tra -1 e 1.


Ci sono tanti metodi per inizializzare la funzione random(), il più popolare è chiamare:

srandom(time(NULL));

Personalmente però preferisco utilizzare arc4random(), perchè ha il doppio della portata di rand() che viene utilizzada da CCRANDOM.
RAND_MAX è 0x7fffffff (2147483647), mentre arc4random() tornerà un valore massimo pari a 0x100000000 (4294967296), quindi una maggiore precisione.
Per generare un intero tra 0 e x-1 con arc4random() si può scrivere:

int value = arc4random() % x;

Per generare un valore tra 1 e x invece si scrive:

int value = (arc4random() % x) + 1;

E’ possibile generare anche un valore tra 0 e 100 comprendendo i decimali semplicemente scrivendo:

#define ARC4RANDOM_MAX      0x100000000

double val = floorf(((double)arc4random() / ARC4RANDOM_MAX) * 100.0f);

In generale per avere una funzione random tra un min e un max è sufficiente scrivere la seguente funzione:

static int randomBetween(int min, int max) {
	return (arc4random() % (max - min)) + min;
}

Buon lavoro.

Scrivi un Commento

Home | Graffiti e Disegni | Educazione | Chi siamo | Blog | Progetti | Contatti
RSS Feed Comments RSS Accedi