Random Number - C# Programming Exercise

In this exercise of C#, you need to create a class called RandomNumber with three static methods. The first method, GetFloat, should return a number between 0 and 1 using the following algorithm:

seed = (seed * a + c) % m
result = abs(seed / m)

The second method, GetInt(max), should return an integer between 0 and a given maximum value (max) using the following calculation:

result = round(max * GetFloat)

The third method, GetInt(min, max), should return an integer between a minimum (min) and a maximum (max) value, and you will need to create this method entirely on your own. This method represents an additional challenge as you'll need to develop an algorithm that works with the provided min and max parameters.

The initial values must be as follows:

m = 233280;
a = 9301;
c = 49297;
seed = 1;

This exercise is useful for practicing the creation of static methods, working with algorithms, and generating random numbers in C#. It also teaches how to use static variables within a class to implement a random number generator.

 Category

OOP More On Classes

 Exercise

Random Number

 Objective

Create a class RandomNumber, with three static methods:

- GetFloat will return a number between 0 and 1 using the following algorithm:

seed = (seed * a + c) % m
result = abs(seed / m)

- GetInt(max) will return a number from 0 to max, using:
result = round(max * GetFloat)

- GetInt(min, max) will return a number from min to max (you must create this one totally on your own).

The starting values must be:
m = 233280;
a = 9301;
c = 49297;
seed = 1;

 Write Your C# Exercise

// 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)}");
    }
}

 Share this C# exercise

 More C# Programming Exercises of OOP More On Classes

Explore our set of C# programming exercises! Specifically designed for beginners, these exercises will help you develop a solid understanding of the basics of C#. From variables and data types to control structures and simple functions, each exercise is crafted to challenge you incrementally as you build confidence in coding in C#.

  •  Text to HTML

    In this exercise of C#, you need to create a class called TextToHTML, which should be able to convert several texts entered by the user into an HTML sequence. ...

  •  Class ScreenText

    In this exercise of C#, you need to create a class called ScreenText, which will display a certain text at specified screen coordinates. The class must have a ...

  •  Enhanced ComplexNumber class

    In this exercise of C#, you need to improve the ComplexNumber class by overloading the + and - operators to allow the addition and subtraction of...

  •  3D point

    In this exercise of C#, you need to create a class called Point3D to represent a point in 3-D space, with coordinates X, Y, and Z. The class must include the f...

  •  Catalog + Menu

    In this exercise of C#, you need to improve the catalog program so that the Main method displays a menu allowing the user to enter new data of any kind, as wel...

  •  Array of objects: table

    In this exercise, you need to create a class named "Table". This class should have a constructor that accepts the width and height of the table. ...