Gerar uma flutuação aleatória em C#

Muhammad Maisam Abbas 16 fevereiro 2024
  1. Gerar flutuação aleatória entre 0 e 1 com a função Random.NextDouble() em C#
  2. Gerar flutuação aleatória sem intervalo com a função Random.NextDouble() em C#
  3. Gerar flutuação aleatória dentro de um intervalo específico com a função Random.NextDouble() em C#
  4. Gerar flutuação aleatória com a função Random.NextBytes() em C#
Gerar uma flutuação aleatória em C#

Neste tutorial, discutiremos métodos para gerar um valor flutuante aleatório em C#.

Gerar flutuação aleatória entre 0 e 1 com a função Random.NextDouble() em C#

Infelizmente, não existe um método integrado para gerar um número aleatório em C#. Portanto, temos que contar com alguns métodos definidos pelo usuário para atingir esse objetivo. A função Random.NextDouble() é usada para gerar um valor duplo aleatório entre 0 e 1. Podemos usar esta função para gerar um valor duplo aleatório entre 0 e 1 e então digitar esse valor aleatório em um float. O exemplo de código a seguir nos mostra como podemos gerar um valor flutuante aleatório entre 0 e 1 com a função Random.NextDouble() em 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);
      }
    }
  }
}

Resultado:

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

Geramos um valor flutuante aleatório entre 0 e 1 com a função Random.NextDouble() em C#. Primeiro geramos um valor duplo aleatório entre 0 e 1 e, em seguida, convertemos esse valor duplo em um valor flutuante usando typecasting.

Gerar flutuação aleatória sem intervalo com a função Random.NextDouble() em C#

Também podemos gerar um valor flutuante aleatório sem definir o intervalo entre 0 e 1 com a função Random.NextDouble() em C#. O único intervalo neste método é o intervalo de valores que o tipo de dados float pode conter. Podemos usar float.MaxValue e float.MinValue para especificar os valores máximo e mínimo que o tipo de dados float pode armazenar. O exemplo de código a seguir nos mostra como gerar um valor flutuante aleatório sem especificar um intervalo com a função Random.NextDouble() em 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);
      }
    }
  }
}

Resultado:

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

Geramos um valor flutuante aleatório sem intervalo com a função Random.NextDouble() em C#. Inicializamos a variável dupla range com float.MaxValue - float.MinValue e, em seguida, convertemos em tipo de dados double. Isso garante que o intervalo de valores aleatórios permaneça dentro do intervalo de valores que um tipo de dados float pode manipular. Calculamos o valor aleatório multiplicando o valor retornado pela função Random.NextDouble() com o range e adicionando float.MinValue ao resultado. No final, convertemos o valor aleatório em tipo de dados float com typecasting.

Gerar flutuação aleatória dentro de um intervalo específico com a função Random.NextDouble() em C#

Também podemos gerar um valor aleatório dentro de um intervalo específico com a função Random.NextDouble() em C#. Por exemplo, suponha que tenhamos que gerar um valor flutuante aleatório entre 1 e 10. Nesse caso, podemos gerar um valor aleatório entre 0 e 1 com a função Random.NextDouble(), multiplicá-lo pelo intervalo e adicionar o valor mínimo a ele. O exemplo de código a seguir nos mostra como gerar um número aleatório entre um intervalo especificado com a função Random.NextDouble() em 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);
      }
    }
  }
}

Resultado:

3.468961 8.04868 2.210197 8.150612 4.217263 5.328617 4.730082 8.462176 2.679844 8.609394

Geramos um valor flutuante aleatório entre 1 e 10 com a função Random.NextDouble() em C#. Especificamos os valores min e max e calculamos o range com range = max - min. Calculamos o valor aleatório multiplicando o valor retornado pela função Random.NextDouble() com o range e adicionando min ao resultado. No final, convertemos o valor aleatório em tipo de dados float com typecasting.

Gerar flutuação aleatória com a função Random.NextBytes() em C#

Também podemos gerar um valor flutuante aleatório com a função Random.NextBytes() em C#. A função [Random.NextBytes(byte[])] é usada para preencher o array byte[] com valores de bytes aleatórios. Podemos gerar valores flutuantes aleatórios convertendo os bytes armazenados em byte[] para o tipo de dados flutuante. O exemplo de código a seguir nos mostra como podemos gerar um valor flutuante aleatório com a função Random.NextBytes() em 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);
      }
    }
  }
}

Resultado:

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

Geramos um valor flutuante aleatório com a função Random.NextBytes() em C#. Preenchemos o array array com valores de bytes aleatórios com a função Random.NextBytes(). Convertemos os valores de byte em float com a função 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

Artigo relacionado - Csharp Float