Cela devrait faire l'affaire. (C'est une méthode d'extension de sorte que vous pouvez l'appeler tout comme vous appelez les méthodes normales Next
ou NextDouble
sur un objet Random
).
public static Int64 NextInt64(this Random rnd)
{
var buffer = new byte[sizeof(Int64)];
rnd.NextBytes(buffer);
return BitConverter.ToInt64(buffer, 0);
}
Remplacez simplement Int64
par UInt64
partout si vous voulez des entiers non signés à la place et tout devrait fonctionner correctement.
Remarque : Étant donné qu'aucun contexte n'a été fourni en ce qui concerne la sécurité ou l'aléatoire désiré des nombres générés (en fait, l'OP a spécifiquement mentionné la classe Random
), mon exemple traite simplement de la classe Random
, qui est la solution préférée lorsque l'aléatoire (souvent quantifié en tant qu'entropie d'information) n'est pas un problème. Par ailleurs, consultez les autres réponses qui mentionnent RNGCryptoServiceProvider
(le RNG fourni dans le namespace System.Security
), qui peut être utilisé de manière presque identique.