Changed implementation of random identifier.
This commit is contained in:
33
RandomHelper.cs
Normal file
33
RandomHelper.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using System;
|
||||
using System.Security.Cryptography;
|
||||
|
||||
namespace SmallInjectorDemo
|
||||
{
|
||||
public static class RandomHelper
|
||||
{
|
||||
|
||||
public static int NewRandomInteger(int min, int max)
|
||||
{
|
||||
// The random number provider.
|
||||
using (var rand = new RNGCryptoServiceProvider())
|
||||
{
|
||||
|
||||
uint scale = uint.MaxValue;
|
||||
while (scale == uint.MaxValue)
|
||||
{
|
||||
// Get four random bytes.
|
||||
var four_bytes = new byte[4];
|
||||
rand.GetBytes(four_bytes);
|
||||
|
||||
// Convert that into an uint.
|
||||
scale = BitConverter.ToUInt32(four_bytes, 0);
|
||||
}
|
||||
|
||||
// Add min to the scaled difference between max and min.
|
||||
return (int)(min + (max - min) *
|
||||
(scale / (double)uint.MaxValue));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user