Genera un float casuale in C#

Muhammad Maisam Abbas 16 febbraio 2024
  1. Genera virgola mobile casuale tra 0 e 1 con la funzione Random.NextDouble() in C#
  2. Genera virgola mobile casuale senza intervallo con la funzione Random.NextDouble() in C#
  3. Genera virgola mobile casuale entro un intervallo specifico con la funzione Random.NextDouble() in C#
  4. Genera Random Float con la funzione Random.NextBytes() in C#
Genera un float casuale in C#

In questo tutorial, discuteremo dei metodi per generare un valore float casuale in C#.

Genera virgola mobile casuale tra 0 e 1 con la funzione Random.NextDouble() in C#

Sfortunatamente, non esiste un metodo integrato per generare un numero casuale in C#. Quindi, dobbiamo fare affidamento su alcuni metodi definiti dall’utente per raggiungere questo obiettivo. La funzione Random.NextDouble() viene utilizzata per generare un doppio valore casuale tra 0 e 1. Possiamo usare questa funzione per generare un doppio valore casuale tra 0 e 1 e quindi trasformare quel valore casuale in un float. Il seguente esempio di codice ci mostra come possiamo generare un valore float casuale compreso tra 0 e 1 con la funzione Random.NextDouble() in 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);
      }
    }
  }
}

Produzione:

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

Abbiamo generato un valore float casuale tra 0 e 1 con la funzione Random.NextDouble() in C#. Abbiamo prima generato un doppio valore casuale tra 0 e 1 e poi convertito quel doppio valore in un valore float utilizzando typecasting.

Genera virgola mobile casuale senza intervallo con la funzione Random.NextDouble() in C#

Possiamo anche generare un valore float casuale senza impostare l’intervallo tra 0 e 1 con la funzione Random.NextDouble() in C#. L’unico intervallo in questo metodo è l’intervallo di valori che il tipo di dati float può contenere. Possiamo usare float.MaxValue e float.MinValue per specificare i valori massimi e minimi che il tipo di dati float può memorizzare. Il seguente esempio di codice ci mostra come generare un valore float casuale senza specificare un intervallo con la funzione Random.NextDouble() in 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);
      }
    }
  }
}

Produzione:

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

Abbiamo generato un valore float casuale senza un intervallo con la funzione Random.NextDouble() in C#. Abbiamo inizializzato la doppia variabile range con float.MaxValue - float.MinValue e poi digitandola in double data type. Ciò garantisce che l’intervallo di valori casuali rimanga all’interno dell’intervallo di valori che un tipo di dati float può gestire. Abbiamo calcolato il valore casuale moltiplicando il valore restituito dalla funzione Random.NextDouble() con range e aggiungendo float.MinValue al risultato. Alla fine, abbiamo convertito il valore casuale in un tipo di dati float con typecasting.

Genera virgola mobile casuale entro un intervallo specifico con la funzione Random.NextDouble() in C#

Possiamo anche generare un valore casuale all’interno di un intervallo specifico con la funzione Random.NextDouble() in C#. Ad esempio, supponiamo di dover generare un valore float casuale compreso tra 1 e 10. In tal caso, possiamo generare un valore casuale compreso tra 0 e 1 con la funzione Random.NextDouble(), moltiplicarlo per l’intervallo e quindi aggiungere il valore minimo ad esso. Il seguente esempio di codice ci mostra come generare un numero casuale tra un intervallo specificato con la funzione Random.NextDouble() in 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);
      }
    }
  }
}

Produzione:

3.468961
8.04868
2.210197
8.150612
4.217263
5.328617
4.730082
8.462176
2.679844
8.609394

Abbiamo generato un valore float casuale compreso tra 1 e 10 con la funzione Random.NextDouble() in C#. Abbiamo specificato i valori min e max e calcolato il range con range = max - min. Abbiamo calcolato il valore casuale moltiplicando il valore restituito dalla funzione Random.NextDouble() con range e aggiungendo min al risultato. Alla fine, abbiamo convertito il valore casuale in un tipo di dati float con typecasting.

Genera Random Float con la funzione Random.NextBytes() in C#

Possiamo anche generare un valore float casuale con la funzione Random.NextBytes() in C#. La funzione Random.NextBytes(byte[]) è usata per riempire l’array byte[] con valori di byte casuali. Possiamo generare valori float casuali convertendo i byte memorizzati in byte[] in un tipo di dato float. Il seguente esempio di codice ci mostra come possiamo generare un valore float casuale con la funzione Random.NextBytes() in 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);
      }
    }
  }
}

Produzione:

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

Abbiamo generato un valore float casuale con la funzione Random.NextBytes() in C#. Abbiamo riempito l’array array con valori di byte casuali con la funzione Random.NextBytes(). Abbiamo convertito i valori dei byte in float con la funzione 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

Articolo correlato - Csharp Float