2010-03-15 3 views
0

Je travaille avec beaucoup de nombres aléatoires pour créer des textures constamment changeantes. Je suis fatigué de faire des choses comme:Valeur Randomization/Scaling Utilities pour iPhone?

((rand() % 1000)/10) + 100 

quand je veux vraiment quelque chose comme

[randomUtils randomNumberBetween:100 and:200] 

Additonally, je voudrais être en mesure de manipuler des poids de la randomisation, de sorte que, pour Par exemple, mes valeurs auraient tendance à se rapprocher de 100 et n'approcheraient que rarement 200.

Est-ce que quelque chose comme ça existe déjà, ou devrais-je simplement l'écrire moi-même?

Répondre

1

Ceci est, IMO, un bon usage pour une classe avec la plupart des méthodes de classe (sinon tous). Par exemple, vous pouvez créer une classe appelée RURandomUtilities. Dans la classe que vous pourriez faire:

+ (NSInteger) randomNumberBetween:(NSInteger) start and:(NSInteger) end 
{ 
    return ((rand() % (start - end) +start); 
} 

et ainsi de suite. En fonction de si vous avez besoin de beaucoup d'instances allant de différents nombres aléatoires, vous pouvez faire ces classes qui sont instanciées avec des paramètres de base pour la pondération et les graines.

Si vous avez besoin d'une performance constante de tous les nombres aléatoires dans vos applications, des singletons statiques locaux pourraient être utilisés pour maintenir la pondération. Le seul objet instancié serait la classe elle-même.

+0

Merci Steven. Cela semble vraiment une bonne façon de le structurer. Je me demandais simplement s'il y a un bon paquet open-source de randomisation-mise à l'échelle déjà disponible quelque part. – morgancodes

+0

Je n'en ai pas vu mais il pourrait être écrit dans environ 30 minutes je pense que si vous avez juste besoin de quelques fonctionnalités de base. Quelques heures si vous voulez un peu plus de sophistication. –