Autor
|
Tema: [SOLUCIONADO] problema con Random (Leído 5,566 veces)
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
¿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 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim a As New List(Of String) For x As Integer = 0 To 10 : a.Add(Get_Random_Number(1, 100)) : Next For Each f In a : MsgBox(f) : Next ' El número siempre es el mismo End Sub Public Function Get_Random_Number(ByVal min As Integer, ByVal max As Integer) As Integer Dim Rando As New Random Return Rando.Next(min, max) End Function End Class
|
|
« Última modificación: 18 Enero 2013, 19:50 pm por EleKtro H@cker »
|
En línea
|
|
|
|
$Edu$
Desconectado
Mensajes: 1.842
|
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.aspxEntenderas muchas cosas mas a parte de lo que quieres.
|
|
|
En línea
|
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
Para obtener 2 valores aleatorios, en vez de usar Random, utillizo la función Rnd(), espero que lo tengas en cuenta. Private Sub GetRandomNumbers(Byval Min as int32, Byval Max as int32) ' Inicializamos el generador de nº aleatorios Randomize() ' Generamos un valor aleatorio entre 50 y 100 Dim Valor As Integer = CInt(Int((100 * Max()) + Min)) return Valor 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
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
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 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
Desconectado
Mensajes: 9.866
|
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. 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 .
Private Sub GetRandomNumbers(Byval Min as int32, Byval Max as int32) ' Inicializamos el generador de nº aleatorios Randomize() ' Generamos un valor aleatorio entre 50 y 100 Dim Valor As Integer = CInt(Int((100 * Max()) + Min)) return Valor 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
Mensajes: 493
My Dear Mizuho
|
CInt(Math.Ceiling(Rnd() * n))
saludos edito: creo que entendi mal. esto es para un numero entre 1 y n. :S este si. Public Function GetRandom(ByVal Min As Integer, ByVal Max As Integer) As Integer Dim Generator As System.Random = New System.Random() Return Generator.Next(Min, Max) End Function
edito otra vez. :S seba123neo se adelanto. hahaha saludos
|
|
« Última modificación: 18 Enero 2013, 19:57 pm por Danyfirex »
|
En línea
|
|
|
|
|
seba123neo
|
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load MsgBox(GetRandomNumber(1, 100)) End Sub Public Function GetRandomNumber(ByVal pMin As Integer, ByVal pMax As Integer) As Integer Return New Random().Next(pMin, pMax) End Function End Class
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Random en VB
Programación Visual Basic
|
Jess_Kapria
|
4
|
4,555
|
30 Diciembre 2005, 18:54 pm
por c0rrupt_gamer
|
|
|
Random
Scripting
|
Herzius
|
4
|
3,498
|
22 Enero 2008, 18:35 pm
por paperas
|
|
|
El Random no es tan Random.
Programación Visual Basic
|
Freeze.
|
7
|
3,016
|
16 Septiembre 2008, 21:02 pm
por JineteNegro666
|
|
|
Problema con Random
Programación Visual Basic
|
aythor94
|
5
|
2,791
|
5 Septiembre 2009, 11:51 am
por aythor94
|
|
|
Problema con RANDOM [BATCH]
Scripting
|
CaronteGold
|
2
|
5,366
|
15 Septiembre 2009, 15:47 pm
por CaronteGold
|
|