Autor
|
Tema: Rellenar con rand no me funciona (Leído 4,307 veces)
|
luis456
Desconectado
Mensajes: 551
|
Otra de las mias cuando quiero unir dos rutinas o mas no me funciona lo de rellenar con numeros aleatorios dentro del rango se supone que este codigo al no haber mas numeros dentro del arreglo tomaria uno al azar dentro del rango establecido pero no se que pasa ahora que no lo hace ReadOnly MAX As Integer = 99 Dim Rand As New Random Dim ReAsult2255e As IEnumerable(Of Integer) = (splits(1).Concat(splits(3).Concat(splits(5). Distinct. Select(Function(Value As Integer) Return If(Value < MAX, Value, Rand.Next(1, MAX)) End Function)))) Dim seAlecctedValues231 As IEnumerable(Of Integer) = ReAsult2255e Dim liste3 As List(Of Integer) = ReAsult2255e.Take(10).ToList liste3.Sort() ListBox12.Items.AddRange(liste3.Cast(Of Object).ToArray) ' ---------------------------------------------------------------------- Dim Rand1 As New Random Dim AReAAsult2255e As IEnumerable(Of Integer) = (splits(3).Concat(splits(10).Concat(splits(11).Concat(splits(12). Distinct. Select(Function(Value As Integer) Return If(Value < MAX, Value, Rand1.Next(1, MAX)) End Function))))) Dim seAlecctedValues231A As IEnumerable(Of Integer) = AReAAsult2255e Dim listeA3 As List(Of Integer) = AReAAsult2255e.Take(10).ToList listeA3.Sort() ListBox13.Items.AddRange(listeA3.Cast(Of Object).ToArray)
Luis
|
|
« Última modificación: 2 Abril 2015, 05:34 am por luis456 »
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
No te funciona cómo esperas porque, en los dos casos que has mostrado, estás aplicando el Distinct y el Select solamente a la última concatenación, puesto que tienes las agrupaciones del Concat abiertas: (splits(3).Concat(splits(10).Concat(splits(11).Concat(splits(12). Distinct. Select(Function(Value As Integer) Return If(Value < MAX, Value, Rand1.Next(1, MAX)) End Function)))))
Para solucionarlo, simplemente fíjate mejor en las concatenaciones que haces en 'ReAsult2255e' y 'AReAAsult2255e', cierra las agrupaciones de ambos correctamente: (splits(3).Concat(splits(10)).Concat(splits(11)).Concat(splits(12))). Distinct. Select(Function(value As Integer) Return If(Value < MAX, Value, Rand1.Next(1, MAX)) End Function)
Se que no te gusta oir esto, pero es que no tendrías ese tipo de problemas si ordenases y estructurases mejor tú código, es un completo lio lo que tienes ...y lo sabes. En mi opinión, lo mejor para ti es que fueses haciendo las cosas por partes, poco a poco, cómo en este ejemplo de abajo donde construyo la colección paso a paso, haciendolo de esta manera te ayudarías a ti mismo a debuguear el código mejor, al poder recurrir/conocer facilmente el estado de la colección antes de hacerle una modificación (cómo la del Select) para hacerle cambios con menos esfuerzo, y también reducir los errores que tienes de mal agrupamiento, o etc: Dim concatCol As IEnumerable(Of Integer) = col1.Concat(col2) Dim distinctCol As IEnumerable(Of Integer) = concatCol.Distinct Dim selectCol As IEnumerable(Of Integer) = distinctCol.Select(Function(value As Integer) If value < max Then Return value Else Return rand.Next(1, max) End If End Function)
Saludos
|
|
« Última modificación: 29 Marzo 2015, 13:29 pm por Eleкtro »
|
En línea
|
|
|
|
luis456
Desconectado
Mensajes: 551
|
Se que no te gusta oir esto, pero es que no tendrías ese tipo de problemas si ordenases y estructurases mejor tú código, es un completo lio lo que tienes ...y lo sabes.Claro que si lo se, pero tengo una grave problema y es siempre la " P " prisa de ver cono funciona y siempre digo " despues lo ordeno " y asi vamos tengo que tratar de ser mas ordenado y valla tambien para los que estan aprendiendo a Programar es un sano consejo que nos da Elektro y se agradece Luis
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
luis456
Desconectado
Mensajes: 551
|
Sigo teniendo problemas con esto pense que lo podria resolver yo pero na he probado a cambiar las declaraciones del rango max de estas formas pero no me me va y cuando algo hizo solo relleno con ceros ??? la funcion que uso no calcula una cantidad fija de numeros y dependiendo de eso, a veces va bien pero creo cuando se queda corto de cantidad de numeros me sale este error en tiempo de ejecucion El valor no puede ser nulo. Nombre del parámetro: second ReadOnly MAX As Integer = 99 ( de cualquiera de las formas no hace nada ) Dim MAX As Integer = 99
Dim concatCol5 As IEnumerable(Of Integer) = splits(3).Concat(splits(13).Concat(splits(15))) Dim distinctCol5 As IEnumerable(Of Integer) = concatCol5.Distinct Dim selectCol5 As IEnumerable(Of Integer) = distinctCol5.Select(Function(value As Integer) If value < MAX Then Return value Else Return Rand.Next(1, MAX) End If End Function) ListBox9.Items.AddRange(selectCol5.Cast(Of Object).ToArray)
Luis
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
El valor no puede ser nulo. Nombre del parámetro: second El error es self-explanatory, se explica por si mismo, date cuenta, la segunda secuencia que estás intentando concatenar a la primera secuencia es una referencia nula (es decir, no se le ha asignado ningún valor, la colección no existe), puede ser una de las que he marcado en rojo: Dim concatCol5 As IEnumerable(Of Integer) = splits(3).Concat(splits(13).Concat(splits(15)))(y además de eso no has corregido las agrupaciones cómo te dije en el comentario anterior, es decir, los paréntesis, aunque ese no es el motivo del error) Cómo indica el mensaje de error, para corregirlo solo debes asegurarte de que la colección que le estás pasando al parámetro "second" de la función "concat" no sea una referencia nula. revisa bien el resto del código, comprueba que splits(13) y splits(15) existan antes de intentar concatenarlos ( msgbox( splits(13) is nothing )), no te puedo ayudar a hallar el motivo ya que no forma parte del código que has mostrado. Este ejemplo que puedes examinar, produce la misma excepción que has comentado, ya que la segunda colección es nula (no confundir con "vacía" {} ): Dim col1 As IEnumerable(Of String) = {} Dim col2 As IEnumerable(Of String) ' = Nothing Dim concatCol As IEnumerable(Of String) = Enumerable.Concat(first:=col1, second:=col2)
Saludos
|
|
« Última modificación: 30 Marzo 2015, 20:24 pm por Eleкtro »
|
En línea
|
|
|
|
luis456
Desconectado
Mensajes: 551
|
A ver segun los calculos que me hace el programa sabes, me entrega cierta cantidad de numeros que varian desde ( 00 al 99 ) unas veces 50 o mas numeros otras 40 y ciertas ocasiones muchas menos y es aca cuando se produce el error, ya que como casi siempre estan por los 50 numeros no da problemas de este tipo ,solo cuando baja de esa cantidad y claro salta el error, ya que no hay numeros para llenar a splits(13) splits(15) pero mayormente no falla, lo que quiero es ver como suplir esos numeros que faltarian y dentro del rango ?
Luis
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
luis456
Desconectado
Mensajes: 551
|
Estudiando el caso este descubri que la forma de que no me de error es mantener el arreglo dentro del minimo de registros que es de 35 registros por debajo de esa cantdad me produce el error, ahora lo que no tengo ni idea como hacerlo,se me ocurre con generar numeros aleaorios dentro el rango pero que no repitan con los de la variable ;(
luis
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
luis456
Desconectado
Mensajes: 551
|
Para cerrar eseto , aca esta con lo que lo solucione gracias a nuestro amigo elektro ' aca esta para relleñar con ceros----------- If Resultss.Count <35 Then Resultss = Resultss.Concat(Enumerable.Repeat(Of Integer)(0, (35 - Resultss.Count))) MsgBox(li.Count) '35 End If
Luis
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Funcion Rand() con strings en PHP
PHP
|
Riki_89D
|
5
|
10,127
|
9 Marzo 2009, 14:37 pm
por cassiani
|
|
|
rand() algo prohibido
Programación C/C++
|
Komodo
|
6
|
4,073
|
2 Septiembre 2010, 11:20 am
por Komodo
|
|
|
Problemas con rand
Programación C/C++
|
luchomax
|
2
|
2,052
|
2 Febrero 2012, 00:45 am
por rir3760
|
|
|
rellenar con rand variable ya cargada de datos
.NET (C#, VB.NET, ASP)
|
luis456
|
8
|
3,431
|
10 Abril 2015, 10:56 am
por luis456
|
|
|
Ayuda con rellenar una matriz con rand()
Programación C/C++
|
serg2404
|
7
|
3,205
|
2 Julio 2016, 04:53 am
por serg2404
|
|