Ejercicio
Número Aleatorio
Objectivo
Cree una clase RandomNumber, con tres métodos estáticos:
- GetFloat devolverá un número entre 0 y 1 utilizando el siguiente algoritmo:
semilla = (semilla * a + c) % m
resultado = abs(semilla / m)
- GetInt(max) devolverá un número de 0 a max, usando:
resultado = round(max * GetFloat)
- GetInt(min, max) devolverá un número de min a max (debes crear este totalmente por tu cuenta).
Los valores iniciales deben ser:
m = 233280;
a = 9301;
c = 49297;
semilla = 1;
Ejemplo Ejercicio C#
Mostrar Código C#
// Importing the System namespace for the functionality of Math methods
using System;
public class RandomNumber
{
// Static fields with the values as required
private static int m = 233280; // Modulus
private static int a = 9301; // Multiplier
private static int c = 49297; // Increment
private static int seed = 1; // Seed value
// Static method to get a float between 0 and 1
public static float GetFloat()
{
// Updating the seed using the given algorithm: seed = (seed * a + c) % m
seed = (seed * a + c) % m;
// Calculating the result as the absolute value of (seed / m)
float result = Math.Abs((float)seed / m);
// Returning the result
return result;
}
// Static method to get an integer from 0 to max
public static int GetInt(int max)
{
// Getting a float value between 0 and 1
float randomFloat = GetFloat();
// Calculating the result as the rounded integer value of (max * GetFloat)
int result = (int)Math.Round(max * randomFloat);
// Returning the result
return result;
}
// Static method to get an integer between min and max
public static int GetInt(int min, int max)
{
// Getting a float value between 0 and 1
float randomFloat = GetFloat();
// Calculating the result as the integer between min and max
int result = (int)Math.Round(min + (max - min) * randomFloat);
// Returning the result
return result;
}
}
// Main program to test the RandomNumber class
public class Program
{
public static void Main()
{
// Testing GetFloat to get a random float between 0 and 1
Console.WriteLine($"Random Float: {RandomNumber.GetFloat()}");
// Testing GetInt to get a random integer between 0 and 100
Console.WriteLine($"Random Int (0 to 100): {RandomNumber.GetInt(100)}");
// Testing GetInt with a specific range (e.g., between 50 and 100)
Console.WriteLine($"Random Int (50 to 100): {RandomNumber.GetInt(50, 100)}");
}
}
Salida
Random Float: 0.2511917
Random Int (0 to 100): 55
Random Int (50 to 100): 67
Código de Ejemplo Copiado!
Comparte este Ejercicio C# Sharp