Tutorial donde mostramos cómo generar números aleatorios (random) desde una aplicación desarrollada con Microsoft Visual Basic .Net de Microsoft Visual Studio .Net. Mostramos cómo generar números aleatorios siempre distintos en VB.NET.
- Cómo generar números aleatorios (random) en Visual Basic .NET.
- Cómo generar números aleatorios (random) en Visual Basic .NET siempre distintos cada vez que se ejecute la aplicación.
- AjpdSoft Números Aleatorios VB.NET.
Cómo generar números aleatorios (random) en Visual Basic .NET
Visual Basic .Net permite el empleo de la antigua instrucción Randomize y de la función Rnd con el objeto de mantener la compatibilidad con versiones anteriores, pero los diseñadores profesionales de .NET deberán utilizar la clase System.Random. Con esta clase se podrá configurar la semilla para la generación del número aleatorio utilizando el método constructor de esta clase:
Dim numeroAleatorio As New Random()
El argumento de la función anterior, de añadirlo, debe ser un entero de 32 bits:
Dim numeroAleatorio As New Random(1234)
Si especificamos un número en el argumento se generará un solo número aleatorio con:
Dim numeroAleatorio As New Random(1234)
numeroAleatorio.Next
En cambio, si no especificamos argumento, se generará una secuencia de números aleatorios (uno cada vez que se llame a «numeroAleatorio.Next») distintos hasta completar la secuencia de números para la semilla actual:
Dim numeroAleatorio As New Random()
numeroAleatorio.Next
Con la clase anterior, un ejemplo de uso para mostrar los números aleatorios generados en un cuadro de texto en VB .Net podría ser:
1 2 3 4 |
Private Sub btRandom_Click(sender As Object, e As EventArgs) Handles btRandom.Click Dim numAleatorio As New Random() txtNumero.Text = System.Convert.ToString(numAleatorio.Next) End Sub |
Si queremos que el valor devuelto (número aleatorio) se encuentre en el rango deseado podremos usar el siguiente ejemplo que obtendrá valores aleatorios entre 100 y 1000:
Dim numAleatorio As New Random()
Dim valorAleatorio As Integer = numeroAleatorio.Next(100, 1000)
Si queremos obtener un número aleatorio en coma flotante (double) usaremos la función NextDouble:
Dim numAleatorio As New Random()
Dim valorAleatorio As Double = numeroAleatorio.NextDouble
Si queremos rellenar una matriz de Bytes con números aleatorios podremos usar el método NextBytes. Un ejemplo para obtener una matriz de 1000 valores aleatorios:
Dim numAleatorio As New Random()
Dim buffer(1000) As Byte
numAleatorio.NextBytes(buffer)
Cómo generar números aleatorios (random) en Visual Basic .NET siempre distintos cada vez que se ejecute la aplicación
En el caso anterior, siempre que se pase de un determinado número de semilla se obtendrá la misma secuencia de números aleatorios. Para obtener una secuencia de números aleatorios distintos cada vez que se ejecute la aplicación, se deberá hacer que la semilla dependa de la hora actual del equipo. En Visual Basic 6 se utilizaba la siguiente instrucción:
Randomize Timer
Para el caso de Visual Basic .NET se utilizará:
Dim numeroAleatorio As New Random(CInt(Date.Now.Ticks And Integer.MaxValue))
Un ejemplo de generación de números aleatorios siempre distintos en VB .NET:
1 2 3 4 5 |
Private Sub btAleatorioDistinto_Click(sender As Object, e As EventArgs) _ Handles btAleatorioDistinto.Click Dim numAleatorio As New Random(CInt(Date.Now.Ticks And Integer.MaxValue)) txtAleatorioDistinto.Text = System.Convert.ToString(numAleatorio.Next) End Sub |
AjpdSoft Números Aleatorios VB.NET
A continuación mostramos el código fuente completo de la aplicación de ejemplo para generar números aleatorios AjpdSoft Números Aleatorios VB.NET:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
Public Class formNumAleatorios Private Sub btAleatorioDistinto_Click(sender As Object, e As EventArgs) _ Handles btAleatorioDistinto.Click Dim numAleatorio As New Random(CInt(Date.Now.Ticks And Integer.MaxValue)) txtAleatorioDistinto.Text = System.Convert.ToString(numAleatorio.Next) End Sub Private Sub btAleatorioArgumento_Click(sender As Object, e As EventArgs) _ Handles btAleatorioArgumento.Click Try Dim numAleatorio As New Random(System.Convert.ToInt32(txtArgumento.Text)) txtNumeroAleatorioArgumento.Text = System.Convert.ToString(numAleatorio.Next) Catch ex As Exception MsgBox("Debe indicar un número válido en el argumento.", _ MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly) txtArgumento.Focus() End Try End Sub Private Sub btAleatorioSinArgumento_Click(sender As Object, e As EventArgs) _ Handles btAleatorioSinArgumento.Click Dim numAleatorio As New Random() txtAleatorioSinArgumento.Text = System.Convert.ToString(numAleatorio.Next) End Sub Private Sub LinkLabel1_LinkClicked(sender As Object, e As _ LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked System.Diagnostics.Process.Start("https://www.proyectoa.com") End Sub End Class |
Su descarga gratuita: