Quão bom é esse método para gerar números aleatórios?

Eu estava procurando no google por RNGCryptoServiceProvider com exemplos sobre como limitar o intervalo entre Max e Min e ainda obter uma distribuição uniforme. Antes eu usava o modulo operator, mas as vezes eu recebo valores estranhos (acima do Max) ... De qualquer forma esse código (credit to unknown) seed Aleatório com uma nova seed do RNGCCryptoServiceProvider, toda vez que o método é chamado. O que é que vocês acham?

public static int GetRandom(int min, int max)
{
  byte[] b = new byte[sizeof(int)];
  new System.Security.Cryptography.RNGCryptoServiceProvider().GetBytes(b);
  int i = BitConverter.ToInt32(b, 0);
  Random r = new Random(i);
  return r.Next(min, max);
}

questionAnswers(3)

yourAnswerToTheQuestion