69 votes

Nombre aléatoire à longue portée, est-ce le chemin?

Quelqu’un peut-il vérifier cette méthode. J’ai besoin d’un long numéro de type à l’intérieur d’une plage de deux longs. J’utilise la fonction .NET Random.Next(min, max) qui renvoie les int. Mon raisonnement est-il correct si je divise simplement le long par 2, que je génère le nombre aléatoire et que je le multiplie finalement par 2 à nouveau ? Ou suis-je trop enthousiaste... Je comprends que ma résolution aléatoire diminuera, mais y a-t-il d’autres erreurs qui ne conduiront pas à un tel nombre aléatoire.

28voto

agent-j Points 14703

Cela crée un Int64 aléatoire en utilisant des octets aléatoires, en évitant le biais modulo en réessayant si le nombre est en dehors de la plage de sécurité.

5voto

Vincent Points 434
private long randomLong()
{
    Random random = new Random();
    byte[] bytes = new byte[8];
    random.NextBytes(bytes);
    return BitConverter.ToInt64(bytes, 0);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X