Aucune raison de ne pas utiliser Random.NextDouble
, puis jeté à l' float
? Qui vous donnera un flottant entre 0 et 1.
Si vous souhaitez une autre forme de "meilleur", vous aurez besoin de spécifier vos besoins. Notez que Random
ne doit pas être utilisé pour des sujets sensibles tels que la finance ou de la sécurité - et vous devriez généralement la réutilisation d'une instance existante tout au long de votre application, ou de l'une par thread (comme Random
n'est pas thread-safe).
EDIT: Comme suggéré dans les commentaires, afin de le convertir à une gamme d' float.MinValue
, float.MaxValue
:
// Perform arithmetic in double type to avoid overflowing
double range = (double) float.MaxValue - (double) float.MinValue;
double sample = rng.NextDouble();
double scaled = (sample * range) + float.MinValue;
float f = (float) scaled;
EDIT: Maintenant, vous avez mentionné que c'est pour les tests unitaires, je ne suis pas sûr que c'est une approche idéale. Vous devriez probablement tester avec une valeur concrète au lieu de décisions, assurez-vous de test avec des échantillons dans chacune des catégories pertinentes - infinities, NaNs, des nombres dénormalisés des chiffres, des nombres très grands, zéro, etc.