2010-07-27 7 views
0

J'ai besoin d'un générateur de nombres aléatoires déterministe qui conserve une sorte de distribution (par exemple uniforme ou normale) qui fonctionne sur un cluster. Boost :: Random répond à la plupart de ces exigences.Distribué aléatoirement sur le cluster

Est-il possible de l'utiliser dans un cluster tout en conservant la distribution?

S'il y avait un moyen efficace de faire avancer le générateur de nombres, ce serait idéal, mais je ne peux pas trouver une telle fonction. Évidemment, je peux appeler la fonction plusieurs fois en boucle, mais je devrai faire cela plusieurs milliers de fois (peut-être beaucoup plus) sur chaque nœud.

Une recommandation sur la façon dont je peux y parvenir?

Répondre

2

Il se peut que je manque quelque chose d'évident ici, mais ne pourriez-vous pas donner à un seul groupe de gènes un graphe (pseudo) choisi au hasard? Je pense que cela vous donnerait une distribution uniforme sur tous les groupes.

Une alternative serait d'avoir tous les nombres aléatoires distribués à partir d'un seul ordinateur qui agit comme un serveur RNG, mais cela serait probablement lent.

+1

Je ne peux pas penser à des distributions aléatoires communes pour lesquelles chaque nœud ayant son propre RNG ne fonctionnerait pas. Il semble que le PO puisse juste être en train de surcharger le problème. Maintenant, s'ils voulaient quelque chose de plus étrange comme une distribution de Poisson, alors tous les bits sont éteints. – McBeth

+0

Il vous manque quelque chose d'évident. Supposons que vous ayez deux machines dans votre cluster et que par malchance, les deux machines commencent avec la même graine. Votre RNG combiné n'est plus si aléatoire. Maintenant, supposons que les graines soient éteintes par un ou trois - les erreurs sont toujours là, mais ce n'est pas évident si vous remarquez que les nombres générés par la première machine arrivent à être la même séquence que celle générée par la seconde machine, décalée par un ou trois. – kfmfe04

+0

@ kfmfe04: Je n'ai pas manqué ça, cependant. Randomness implique la possibilité de répéter des séquences de temps en temps. De plus, si vous connaissez les graines, alors le patron est prévisible, ce qui a le même effet si deux des graines sont identiques ou non. –

0

En fonction de la robustesse de votre PRNG, vous devrez peut-être faire preuve de prudence ici; il y a certainement des pièges dans l'utilisation de plusieurs PRNG.

En particulier, il existe des experts en statistiques qui se spécialisent dans la recherche d'algorithmes parallèles pour PRNG. Pour commencer à penser à certains de ces problèmes, vous pouvez regarder un document comme this.

Comme tous les problèmes, je recommande que vous preniez des photos pour faire les choses correctement, d'abord, puis pour les faire fonctionner rapidement.