Generar un flotante aleatorio en C#

Muhammad Maisam Abbas 16 febrero 2024
  1. Genere un flotante aleatorio entre 0 y 1 con la función Random.NextDouble() en C#
  2. Genere un flotante aleatorio sin un rango con la función Random.NextDouble() en C#
  3. Genere un flotante aleatorio dentro de un rango específico con la función Random.NextDouble() en C#
  4. Genere un flotante aleatorio con la función Random.NextBytes() en C#
Generar un flotante aleatorio en C#

En este tutorial, discutiremos métodos para generar un valor flotante aleatorio en C#.

Genere un flotante aleatorio entre 0 y 1 con la función Random.NextDouble() en C#

Desafortunadamente, no existe un método integrado para generar un número aleatorio en C#. Entonces, tenemos que confiar en algunos métodos definidos por el usuario para lograr este objetivo. La función Random.NextDouble() se utiliza para generar un valor doble aleatorio entre 0 y 1. Podemos usar esta función para generar un valor doble aleatorio entre 0 y 1 y luego encasillar ese valor aleatorio en un flotante. El siguiente ejemplo de código nos muestra cómo podemos generar un valor flotante aleatorio entre 0 y 1 con la función Random.NextDouble() en C#.

using System;

namespace random_float {
  class Program {
    static void Main(string[] args) {
      Random rand = new Random();
      for (int i = 0; i < 10; i++) {
        float randomFloat = (float)rand.NextDouble();
        Console.WriteLine("Random Float = {0}", randomFloat);
      }
    }
  }
}

Producción :

Random Float = 0.3914659
Random Float = 0.8927528
Random Float = 0.6579643
Random Float = 0.4404075
Random Float = 0.3213561
Random Float = 0.3399849
Random Float = 0.04562188
Random Float = 0.1881405
Random Float = 0.7638124
Random Float = 0.1645804

Generamos un valor flotante aleatorio entre 0 y 1 con la función Random.NextDouble() en C#. Primero generamos un valor doble aleatorio entre 0 y 1 y luego convertimos ese valor doble en un valor flotante mediante el encasillado.

Genere un flotante aleatorio sin un rango con la función Random.NextDouble() en C#

También podemos generar un valor flotante aleatorio sin establecer el rango entre 0 y 1 con la función Random.NextDouble() en C#. El único rango en este método es el rango de valores que el tipo de datos flotantes puede contener. Podemos utilizar float.MaxValue y float.MinValue para especificar los valores máximos y mínimos que puede almacenar el tipo de datos float. El siguiente ejemplo de código nos muestra cómo generar un valor flotante aleatorio sin especificar un rango con la función Random.NextDouble() en C#.

using System;

namespace random_float {
  class Program {
    static void Main(string[] args) {
      Random rand = new Random();
      double range = (double)float.MaxValue - (double)float.MinValue;
      for (int i = 0; i < 10; i++) {
        double sample = rand.NextDouble();
        double scaled = (sample * range) + float.MinValue;
        float f = (float)scaled;
        Console.WriteLine(f);
      }
    }
  }
}

Producción :

1.500952E+38
-1.930891E+38
2.951987E+38
-1.205054E+38
-6.225039E+37
3.843309E+36
-1.241292E+38
1.360907E+38
1.769061E+38
-1.577001E+38

Generamos un valor flotante aleatorio sin rango con la función Random.NextDouble() en C#. Inicializamos la variable doble range con float.MaxValue - float.MinValue y luego la encasillamos en el tipo de datos doble. Esto asegura que el rango de valores aleatorios permanece dentro del rango de valores que puede manejar un tipo de datos flotantes. Calculamos el valor aleatorio multiplicando el valor devuelto por la función Random.NextDouble() con el range y agregando float.MinValue al resultado. Al final, convertimos el valor aleatorio en un tipo de datos flotante con encasillamiento.

Genere un flotante aleatorio dentro de un rango específico con la función Random.NextDouble() en C#

También podemos generar un valor aleatorio dentro de un rango específico con la función Random.NextDouble() en C#. Por ejemplo, supongamos que tenemos que generar un valor flotante aleatorio entre 1 y 10. En ese caso, podemos generar un valor aleatorio entre 0 y 1 con la función Random.NextDouble(), multiplicarlo por el rango y luego agregarle el valor mínimo. El siguiente ejemplo de código nos muestra cómo generar un número aleatorio entre un rango especificado con la función Random.NextDouble() en C#.

using System;

namespace random_float {
  class Program {
    static void Main(string[] args) {
      Random rand = new Random();
      double min = 1;
      double max = 10;
      double range = max - min;
      for (int i = 0; i < 10; i++) {
        double sample = rand.NextDouble();
        double scaled = (sample * range) + min;
        float f = (float)scaled;
        Console.WriteLine(f);
      }
    }
  }
}

Producción :

3.468961
8.04868
2.210197
8.150612
4.217263
5.328617
4.730082
8.462176
2.679844
8.609394

Generamos un valor flotante aleatorio entre 1 y 10 con la función Random.NextDouble() en C#. Especificamos los valores min y max y calculamos el range con range = max - min. Calculamos el valor aleatorio multiplicando el valor devuelto por la función Random.NextDouble() con el range y agregando min al resultado. Al final, convertimos el valor aleatorio en un tipo de datos flotante con encasillamiento.

Genere un flotante aleatorio con la función Random.NextBytes() en C#

También podemos generar un valor flotante aleatorio con la función Random.NextBytes() en C#. La función Random.NextBytes(byte[]) se utiliza para llenar el array byte[] con valores de bytes aleatorios. Podemos generar valores flotantes aleatorios convirtiendo los bytes almacenados en byte[] al tipo de datos flotante. El siguiente ejemplo de código nos muestra cómo podemos generar un valor flotante aleatorio con la función Random.NextBytes() en C#.

using System;

namespace random_float {
  class Program {
    static void Main(string[] args) {
      Random rand = new Random();
      for (int i = 0; i < 10; i++) {
        var array = new byte[4];
        rand.NextBytes(array);
        float randomFloat = BitConverter.ToSingle(array, 0);
        Console.WriteLine("Random Value = {0}", randomFloat);
      }
    }
  }
}

Producción :

Random Value = 2.021232E-20
Random Value = -121623
Random Value = -1.564382E+38
Random Value = 1.146448E-14
Random Value = -6.874067E-22
Random Value = -1.226989E+31
Random Value = -3.01435E+08
Random Value = -8.568415E+30
Random Value = -1.454825E+27
Random Value = 3.801608E-26

Generamos un valor flotante aleatorio con la función Random.NextBytes() en C#. Llenamos el array matriz con valores de bytes aleatorios con la función Random.NextBytes(). Convertimos los valores de bytes a flotantes con la función BitConverter.ToSingle().

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artículo relacionado - Csharp Float