mercredi 8 septembre 2021

C# Return Double or Integer lowerBound and upperBound depends on the given values

Sometimes users provides non decimal numbers and if they do that I need to get a non decimal random number, I created this method. Does this make sense and efficient?

public double RandomValue(double lowerBound, double upperBound){

     Random rnd = new Random();

     double randomNumber;

     //If user provides both integers, we get integer random number 
     if(lowerBound == (int)lowerBound && upperBound == (int)upperBound)
     {
        randomNumber = rnd.Next((int)lowerBound, (int)upperBound);
     }
     //If user provides mix-match. lowerBound double - upperBound integer
     else if (lowerBound != (int)lowerBound && upperBound == (int)upperBound)
     {
        //E.g. randomNumber = 30 + (0.75 * (60.2 - 30)) = 52.65
        randomNumber = lowerBound + (rnd.NextDouble() * (upperBound - lowerBound));
        randomNumber = Math.Round(randomNumber, 1);
     }
     //If user provides mix-match. lowerBound integer - upperBound double
     else if (lowerBound == (int)lowerBound && upperBound != (int)upperBound)
     {
        //E.g. randomNumber = 35.3 + (0.75 * (70 - 35.3)) = 61.325
        randomNumber = lowerBound + (rnd.NextDouble() * (upperBound - lowerBound));
        randomNumber = Math.Round(randomNumber, 1);
     }
     //If user provides both double, we get double random number
     else
     {
        //E.g. randomNumber = 35.3 + (0.75 * (70 - 35.3)) = 61.325
        randomNumber = lowerBound + (rnd.NextDouble() * (upperBound - lowerBound));
        randomNumber = Math.Round(randomNumber, 1);
     }
     //If user doesn't provide any range, use random integer
     else
     {
        randomNumber = rnd.Next(50, 150);
     }
     
  return randomNumber;
  
}



Aucun commentaire:

Enregistrer un commentaire