2010-04-02 3 views
1

J'utilise une fonction de nombre aléatoire personnalisée rand48 dans CUDA. La fonction ne permet pas de définir une limite supérieure, mais la sortie doit être comprise entre 0 et 1.Limite supérieure pour le rand48 personnalisé

Je suppose qu'il me manque quelque chose mais comment convertir la sortie entre 0 et 1, la longueur du nombre peut changer par exemple 697135872 aurait besoin d'être divisé par 100.000.000 et 29.186.668 aurait besoin d'être divisé par 100000000.

Merci à tous

+0

Est-ce que votre PRNG renvoie une distribution constante sur une certaine plage? Voulez-vous retourner un 'float'? – Potatoswatter

+0

C'est la même chose que le standard rand(), et oui un flotteur serait génial. –

Répondre

0

Si votre PRNG se comporte comme rand alors il génère des nombres entre 0 et RAND_MAX avec une probabilité uniforme. Il suffit de multiplier par 1.f/RAND_MAX.

Si vous divisez par des nombres différents dans des cas différents, vous obtiendrez une distribution non uniforme.

Questions connexes