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

  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

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().

Artigo relacionado - Csharp Float

  • Como converter uma string para flutuar em C#
  • Converter Float para Int em C#