Pourquoi ce générateur de nombres aléatoires n’est-il pas aléatoire?

Doublons possibles:
Pourquoi semble-t-il que mon générateur de nombres aléatoires n’est pas aléatoire en C #?
Le générateur de nombres aléatoires ne fonctionne pas comme prévu (C #)

J’ai cette méthode pour calculer une valeur aléatoire:

private double getMesortingcs(SourceFile sf) { Random r = new Random(); return (r.NextDouble()); } 

Cependant, il retourne toujours le même nombre, dans mon cas 0.41500350386603

Pourquoi????

new Random() utilise l’heure actuelle comme valeur de départ. Ainsi, si vous appelez cette fonction plusieurs fois dans un laps de temps très court, elle peut renvoyer la même valeur. Voici l’explication de MSDN :

La valeur de départ par défaut est dérivée de l’horloge système et a une résolution finie. En conséquence, différents objects aléatoires créés successivement par un appel au constructeur par défaut auront des valeurs de départ par défaut identiques et, par conséquent, produiront des ensembles identiques de nombres aléatoires. Ce problème peut être évité en utilisant un seul object aléatoire pour générer tous les nombres aléatoires.

Déclarez simplement le hasard de votre méthode et chaque fois que vous appelez la méthode, de nouveaux numéros seront créés, à moins que cette dernière ne soit supprimée et recréée. Une fois recréés, les numéros seront identiques au début. Vous pouvez faire attendre quelques ms avant de créer le nombre aléatoire si vous voulez “plus” de nombres uniques. Si vous voulez des nombres très uniques, GuID est préférable.