Números aleatorios

25/11/2004 - 12:01 por dgironal | Informe spam
Muy buenas, tengo un pequeño problema y una curiosidad:

Planteamiento:
He de generar aleatoriamente valores (de humedad ambiental), comprendidos
entre un valor mínimo y máximo y con una precisión de un decimal (25,0 %,
30,5 %, ...), he realizado la siguiente implementación:

Dim Hmin As Double
Dim Hmax As Double
Dim humedad As Double

humedad = Math.Round((Rnd() * (Hmax - Hmin)) + Hmin, 1)

Funciona, pero:
Curiosidad:
¿Cómo reescribir el código que genera los valores aleatorios en PURO .NET?,
lo comento porque me da la impresión que la función Rnd() viene de la vieja
escuela (Visual Basic)

Problema:
¿Cómo generar esos valores comprendidos entre un intervalo mínimo y máximo,
con una precisión de un decimal, PERO que el decimal sea 0 ó 5?, es decir:
12,0 - 13,0 - 15,5 - 14,0 - 12,5 - 15,5 - 14,5 - ...
(ahora (aquí está el "error": 12,1 - 12,7 - 13,8 - ...)

Gracias de antemano
 

Leer las respuestas

#1 Cesarion
25/11/2004 - 20:03 | Informe spam
bueno para generar numeros aleatorios de .net puedes utilizar la calse Random
que esta en el namespace System

para lo otro puedes utilizar la siguiente formula

humedad = Math.Round(((Rnd() * (hmax - hmin)) + hmin) * 2, 0) / 2


"dgironal" wrote:

Muy buenas, tengo un pequeño problema y una curiosidad:

Planteamiento:
He de generar aleatoriamente valores (de humedad ambiental), comprendidos
entre un valor mínimo y máximo y con una precisión de un decimal (25,0 %,
30,5 %, ...), he realizado la siguiente implementación:

Dim Hmin As Double
Dim Hmax As Double
Dim humedad As Double

humedad = Math.Round((Rnd() * (Hmax - Hmin)) + Hmin, 1)

Funciona, pero:
Curiosidad:
¿Cómo reescribir el código que genera los valores aleatorios en PURO .NET?,
lo comento porque me da la impresión que la función Rnd() viene de la vieja
escuela (Visual Basic)

Problema:
¿Cómo generar esos valores comprendidos entre un intervalo mínimo y máximo,
con una precisión de un decimal, PERO que el decimal sea 0 ó 5?, es decir:
12,0 - 13,0 - 15,5 - 14,0 - 12,5 - 15,5 - 14,5 - ...
(ahora (aquí está el "error": 12,1 - 12,7 - 13,8 - ...)

Gracias de antemano




Preguntas similares