elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [SOLUCIONADO] problema con Random
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SOLUCIONADO] problema con Random  (Leído 5,237 veces)
Eleкtro
Ex-Staff
*
Conectado Conectado

Mensajes: 9.818



Ver Perfil
[SOLUCIONADO] problema con Random
« en: 18 Enero 2013, 17:18 pm »

¿Que debo hacer para que esto funcione?

Si declaro la variable "Rando" fuera de la función, funciona, pero precísamente lo que pretendo es ahorrarme la necesidad de declarar la variable fuera de la función... xD

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  4.        Dim a As New List(Of String)
  5.        For x As Integer = 0 To 10 : a.Add(Get_Random_Number(1, 100)) : Next
  6.  
  7.        For Each f In a : MsgBox(f) : Next ' El número siempre es el mismo
  8.  
  9.    End Sub
  10.  
  11.    Public Function Get_Random_Number(ByVal min As Integer, ByVal max As Integer) As Integer
  12.        Dim Rando As New Random
  13.        Return Rando.Next(min, max)
  14.    End Function
  15.  
  16. End Class


« Última modificación: 18 Enero 2013, 19:50 pm por EleKtro H@cker » En línea

$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: problema con Random
« Respuesta #1 en: 18 Enero 2013, 17:29 pm »

Lo ideal seria que hagas una funcion que te devuelva la lista ya con los numeros aleatorios, es decir, en el load solo pondrias a = ListAleatoria(1, 100).

Asi te puedes guardar el snippet de una funcion que devuelva una lista con numeros aleatorios segun si indiquen en los parametros que se llame.

Vos estas haciendo que solo devuelva un numero y luego lo guardas, mas vale hacer como digo de que devuelva la lista ya.

De todas formas, para tu duda en si, mirate esto:

http://www.elguille.info/NET/dotnet/random_Next.aspx

Entenderas muchas cosas mas a parte de lo que quieres.


En línea

kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: problema con Random
« Respuesta #2 en: 18 Enero 2013, 17:32 pm »

Para obtener 2 valores aleatorios, en vez de usar Random, utillizo la función Rnd(), espero que lo tengas en cuenta.

Código
  1. Private Sub GetRandomNumbers(Byval Min as int32, Byval Max as int32)
  2. ' Inicializamos el generador de nº aleatorios
  3. Randomize()
  4. ' Generamos un valor aleatorio entre 50 y 100
  5. Dim Valor As Integer = CInt(Int((100 * Max()) + Min))
  6. return Valor
  7. End Sub

Solo te falta añadir esos números a una Lista.

Saludos!
« Última modificación: 18 Enero 2013, 17:34 pm por kub0x » En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: problema con Random
« Respuesta #3 en: 18 Enero 2013, 17:37 pm »

Concuerdo con $Edu$, de este modo estas creando una función que no agrega ningún tipo de funcionalidad, valga la redundancia.
¿Qué me ahorra el utilizar la función nueva? ¿El new solamente? Si estas creando snippets, que realmente tenga un valor agregado, y que no simplemente sea un sinónimo, cuesta más buscar el snippet que escribir el código :xD

Saludos
« Última modificación: 18 Enero 2013, 17:40 pm por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Eleкtro
Ex-Staff
*
Conectado Conectado

Mensajes: 9.818



Ver Perfil
Re: problema con Random
« Respuesta #4 en: 18 Enero 2013, 17:41 pm »

Poca funcionalidad más puede tener un "get random numbers", sólamente elegir si se quiere un número décimal o... bueno, ya vendrá, primero necesito que funcione xD



Lo de la lista solo era un ejemplo de uno de los casos en los que siempre manda el mismo número.

Citar
1- NO generar la instancia de clase Random, ni la semilla, dentro de un bucle.
Ya que si lo haces, puedes tener la seguridad de que los valores se repitan.

2- NO generar la semilla ni la instancia del objeto Random dentro de un método que será llamado de forma consecutiva.
Podías pensar, que si en lugar de crear la instancia dentro del bucle, la creas fuera se soluciona, pero si ese "fuera" es dentro del método, la verdad es que no.

Pues vaya :(.



Código
  1.    Private Sub GetRandomNumbers(Byval Min as int32, Byval Max as int32)
  2.    ' Inicializamos el generador de nº aleatorios
  3.    Randomize()
  4.    ' Generamos un valor aleatorio entre 50 y 100
  5.    Dim Valor As Integer = CInt(Int((100 * Max()) + Min))
  6.    return Valor
  7.    End Sub

Se nota que lo has escrito al vuelo, no funciona! xD

He intentado corregirlo pero me devuelve siempre valores por encima de "400"
« Última modificación: 18 Enero 2013, 17:44 pm por EleKtro H@cker » En línea

Danyfirex


Desconectado Desconectado

Mensajes: 493


My Dear Mizuho


Ver Perfil
Re: problema con Random
« Respuesta #5 en: 18 Enero 2013, 19:41 pm »

Código
  1. CInt(Math.Ceiling(Rnd() * n))

saludos

edito: creo que entendi mal. esto es para un numero entre 1 y n.
 :S

este si.

Código
  1. Public Function GetRandom(ByVal Min As Integer, ByVal Max As Integer) As Integer
  2.    Dim Generator As System.Random = New System.Random()
  3.    Return Generator.Next(Min, Max)
  4. End Function
  5.  


edito otra vez. :S

seba123neo se adelanto.

hahaha

saludos
« Última modificación: 18 Enero 2013, 19:57 pm por Danyfirex » En línea

Eleкtro
Ex-Staff
*
Conectado Conectado

Mensajes: 9.818



Ver Perfil
Re: problema con Random
« Respuesta #6 en: 18 Enero 2013, 19:50 pm »

Grax :)
« Última modificación: 18 Enero 2013, 20:02 pm por EleKtro H@cker » En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: [SOLUCIONADO] problema con Random
« Respuesta #7 en: 18 Enero 2013, 19:52 pm »

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  4.        MsgBox(GetRandomNumber(1, 100))
  5.    End Sub
  6.  
  7.    Public Function GetRandomNumber(ByVal pMin As Integer, ByVal pMax As Integer) As Integer
  8.        Return New Random().Next(pMin, pMax)
  9.    End Function
  10. End Class
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Random en VB
Programación Visual Basic
Jess_Kapria 4 4,387 Último mensaje 30 Diciembre 2005, 18:54 pm
por c0rrupt_gamer
Random
Scripting
Herzius 4 3,249 Último mensaje 22 Enero 2008, 18:35 pm
por paperas
El Random no es tan Random.
Programación Visual Basic
Freeze. 7 2,815 Último mensaje 16 Septiembre 2008, 21:02 pm
por JineteNegro666
Problema con Random
Programación Visual Basic
aythor94 5 2,613 Último mensaje 5 Septiembre 2009, 11:51 am
por aythor94
Problema con RANDOM [BATCH]
Scripting
CaronteGold 2 5,185 Último mensaje 15 Septiembre 2009, 15:47 pm
por CaronteGold
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines