<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>programancia101 - Todos los comentarios</title><link>http://geeks.ms/blogs/programancia101/default.aspx</link><description>aprendiendo a aprender...</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>re: a veces, las cosas cambian</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/22/a-veces-las-cosas-cambian.aspx#44999</link><pubDate>Wed, 24 Oct 2007 12:22:32 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:44999</guid><dc:creator>phobeo</dc:creator><description>&lt;p&gt;hola pirsonas!&lt;/p&gt;
&lt;p&gt;Ante todo, mil perdones! Como he puesto en el articulo, pegue la version del codigo que no era! (los problemas de tener que exportar a html desde fuera en vez de con la herramienta del community server) &amp;nbsp;}:/&lt;/p&gt;
&lt;p&gt;Lo que pretendia que se viera en este trozo de codigo es un antipatron que he visto en un par de codigos reales: el problema de las referencias externas y las invariantes. Espero que con esta nueva version quede mas claro&lt;/p&gt;
&lt;p&gt;Basicamente, teneis todos razon. Al tener una referencia externa y cambiarla, cambiamos el estado interno de los otros objetos. Esto es un fallo normal en programadores que no recuerdan que al asignar una referencia no COPIAS el objeto, solo apuntas a esa instancia. El problema surge cuando a veces queremos garantizar algun tipo de invariante (como en el caso de ser una HardRockStar, que solo debe gustarte el rock, el alcohol y las malas mujeres). El no guardar el estado despues de chequear la invariante (eg: clonando el objeto) hace que una referencia externa pueda dejarnos en un estado inconsistente (que es como te quedas despues de ver a Slash tocando un solo con Marta Sanchez, inconsistente)&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=44999" width="1" height="1"&gt;</description></item><item><title>re: a veces, las cosas cambian</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/22/a-veces-las-cosas-cambian.aspx#44758</link><pubDate>Tue, 23 Oct 2007 17:26:44 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:44758</guid><dc:creator>suge</dc:creator><description>&lt;p&gt;Estamos entonces todos deacuerdo??. No se que implicaciones malevolas tendr&amp;#225; el que la clase Style se encuentre dentro de Music Start. Pero vamos por lo que veo solo se crea una instancia de Style &amp;nbsp;que es referenciada desde las tres instancias de &amp;quot;MusicStar&amp;quot;.&lt;/p&gt;
&lt;p&gt;Me estoy perdiendo algo, pero bueno el compilador dir&amp;#225;.&lt;/p&gt;
&lt;p&gt;SaludOs.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=44758" width="1" height="1"&gt;</description></item><item><title>re: a veces, las cosas cambian</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/22/a-veces-las-cosas-cambian.aspx#44719</link><pubDate>Tue, 23 Oct 2007 14:30:27 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:44719</guid><dc:creator>penyaskito</dc:creator><description>&lt;p&gt;El t&amp;#237;tulo del post lo dice todo :-P&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=44719" width="1" height="1"&gt;</description></item><item><title>re: a veces, las cosas cambian</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/22/a-veces-las-cosas-cambian.aspx#44659</link><pubDate>Tue, 23 Oct 2007 10:38:21 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:44659</guid><dc:creator>Luis Ruiz Pavón</dc:creator><description>&lt;p&gt;S&amp;#237;, estoy con Tio Luiso XD y adem&amp;#225;s el sercreo de Telepizza est&amp;#225; en la masa...&lt;/p&gt;
&lt;p&gt;Salu2&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=44659" width="1" height="1"&gt;</description></item><item><title>re: a veces, las cosas cambian</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/22/a-veces-las-cosas-cambian.aspx#44627</link><pubDate>Tue, 23 Oct 2007 08:17:03 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:44627</guid><dc:creator>Augusto Ruiz</dc:creator><description>&lt;p&gt;Tio Luiso est&amp;#225; en lo cierto. Estamos cambiando el valor a la misma instancia de Style, que comparten todos.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=44627" width="1" height="1"&gt;</description></item><item><title>re: a veces, las cosas cambian</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/22/a-veces-las-cosas-cambian.aspx#44615</link><pubDate>Tue, 23 Oct 2007 07:19:15 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:44615</guid><dc:creator>Tio_Luiso</dc:creator><description>&lt;p&gt;Hay trampa?&lt;/p&gt;
&lt;p&gt;Desde aqu&amp;#237; parece que las 3 instancias de MusicStar en realidad comparten una sola instancia de Style como su propiedad Style, que es la que se instanci&amp;#243; antes de Slash, se le cambi&amp;#243; el nombre tambi&amp;#233;n antes de Slash, y luego se le volvi&amp;#243; a cambiar el nombre antes de paulina y marta.&lt;/p&gt;
&lt;p&gt;En consecuencia, la salida deber&amp;#237;a ser:&lt;/p&gt;
&lt;p&gt;nuestras estrellas de esta noche son:&lt;/p&gt;
&lt;p&gt;nombre: Slash (estilo:CutrePop)&lt;/p&gt;
&lt;p&gt;nombre: Paulina Rubio (estilo:CutrePop)&lt;/p&gt;
&lt;p&gt;nombre: Marta Sanchez (estilo:CutrePop)&lt;/p&gt;
&lt;p&gt;Eso es lo que pienso. Ahora voy a comprobarlo. Las preguntas son:&lt;/p&gt;
&lt;p&gt;- Tendr&amp;#233; Raz&amp;#243;n?&lt;/p&gt;
&lt;p&gt;- Te perdonar&amp;#225; Slash?&lt;/p&gt;
&lt;p&gt;- Cu&amp;#225;l es el secreto de Telepizza?&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=44615" width="1" height="1"&gt;</description></item><item><title>re: a veces, las cosas cambian</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/22/a-veces-las-cosas-cambian.aspx#44538</link><pubDate>Mon, 22 Oct 2007 22:15:27 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:44538</guid><dc:creator>Eber Irigoyen</dc:creator><description>&lt;p&gt;todos los objetos MusicStar tienen una referencia al unico objeto MusicStar.Style style, asi que todos mostraran estilo CutrePop&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=44538" width="1" height="1"&gt;</description></item><item><title>re: a veces, las cosas cambian</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/22/a-veces-las-cosas-cambian.aspx#44525</link><pubDate>Mon, 22 Oct 2007 21:06:18 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:44525</guid><dc:creator>Serabe</dc:creator><description>&lt;p&gt;Jurar&amp;#237;a que:&lt;/p&gt;
&lt;p&gt;nuestras estrellas de esta noche son:&lt;/p&gt;
&lt;p&gt;nombre: Slash (estilo: CutrePop)&lt;/p&gt;
&lt;p&gt;nombre: Paulina Rubio (estilo: CutrePop)&lt;/p&gt;
&lt;p&gt;nombre: Marta S&amp;#225;nchez (estilo: CutrePop)&lt;/p&gt;
&lt;p&gt;Y si no me equivoco se debe a que todos guardan una referencia al mismo objeto style, al cual le has cambiado el nombre...&lt;/p&gt;
&lt;p&gt;Si te soy sincero ahora mismo no s&amp;#233; si tengo raz&amp;#243;n porque la tengo, o porque estoy que me caigo por los suelos...&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=44525" width="1" height="1"&gt;</description></item><item><title>re: a veces, las cosas cambian</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/22/a-veces-las-cosas-cambian.aspx#44514</link><pubDate>Mon, 22 Oct 2007 20:17:46 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:44514</guid><dc:creator>El Bruno</dc:creator><description>&lt;p&gt;Ricardo pufff ... me has hecho pasar completamente del problema planteado (sorry); desp de ver de nuevo al gigante de Slash, estoy desempolvando unos CDs donde se desataba junto a Gilby Clark y otros ... basta de c&amp;#243;digo por esta semana y a retomar la Gibson :D&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=44514" width="1" height="1"&gt;</description></item><item><title>a veces, las cosas cambian</title><link>http://geeks.ms/blogs/programancia101/archive/2006/12/25/que-es-programancia.aspx#44479</link><pubDate>Mon, 22 Oct 2007 18:14:25 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:44479</guid><dc:creator>programancia101</dc:creator><description>&lt;p&gt;Esta semana estar&amp;#233; de reuni&amp;#243;n en Santiago de Chile, preparando la pr&amp;#243;xima edici&amp;#243;n de IEEEXtreme , el&lt;/p&gt;
&lt;img src="http://geeks.ms/aggbug.aspx?PostID=44479" width="1" height="1"&gt;</description></item><item><title>re: todos por igual</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/16/todos-por-igual.aspx#44450</link><pubDate>Mon, 22 Oct 2007 17:36:10 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:44450</guid><dc:creator>phobeo</dc:creator><description>&lt;p&gt;suge: Efectivamente, es una solucion! }:)&lt;/p&gt;
&lt;p&gt;Sin embargo, yo lo refactorizaria un poco para que las condiciones &amp;quot;similares&amp;quot; (por ejemplo: cuando insertamos en el array) se hagan en el mismo bloque de codigo. Suele ser buena idea cuando hay multiples posibilidades de ejecutar la misma accion en un trozo de codigo por si en el futuro a&amp;#241;ades/eliminas condiciones y lo hace mas legible&lt;/p&gt;
&lt;p&gt;Tio_Luiso: Efectivamente, la solucion de suge se ajusta a lo que comentabamos... y no, no hace falta que hagas los calculos en un comment! }:)&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=44450" width="1" height="1"&gt;</description></item><item><title>re: todos por igual</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/16/todos-por-igual.aspx#44393</link><pubDate>Mon, 22 Oct 2007 13:39:24 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:44393</guid><dc:creator>Tio_Luiso</dc:creator><description>&lt;p&gt;Ya he visto mi error. Lo que propone suge (a falta de revisar el c&amp;#243;digo, cosa que no he hecho) me parece que est&amp;#225; bien.&lt;/p&gt;
&lt;p&gt;He hecho unos calculillos para ver si pa probabilidad de aparici&amp;#243;n de cada elemento en la muestra es la misma (la definici&amp;#243;n de equiprobabilidad), y lo es. He calculado la probabilidad que tiene cualquier elemento de entrar &amp;quot;inicialmente&amp;quot; en el array, y la probabilidad que tiene cualquier elemento posterior de entrar pis&amp;#225;ndolo (condicionado a que haya entrado previamente el elemento en el que estamos interesados). La resta de estas dos probabilidades tiene que ser una constante para todos los elementos. De hecho, tiene que acabar siendo igual a TamK / TamN para todos los elementos de N.&lt;/p&gt;
&lt;p&gt;Si no hace falta que haga aqu&amp;#237; los c&amp;#225;lculos, mejor.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=44393" width="1" height="1"&gt;</description></item><item><title>re: todos por igual</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/16/todos-por-igual.aspx#44338</link><pubDate>Mon, 22 Oct 2007 08:05:05 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:44338</guid><dc:creator>suge</dc:creator><description>&lt;p&gt;Ah&amp;#237; va en C#. Quedar&amp;#237;a algo m&amp;#225;s o menos as&amp;#237;:&lt;/p&gt;
&lt;p&gt;public static int[] arrayEquiprobable(myStream flujo_de_entrada, int long_array)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int posicionEstudiada = 0;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int[] array_solucion = new int[long_array];&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Random miRandom =new Random(DateTime.Now.Millisecond);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int posAleatoria ;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while(flujo_de_entrada.hasNext())&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (posicionEstudiada&amp;lt;long_array)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;array_solucion[posicionEstudiada]=flujo_de_entrada.getNext(); &amp;nbsp;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;posAleatoria=miRandom.Next(posicionEstudiada);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (posAleatoria&amp;lt;long_array)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;array_solucion[posicionEstudiada]=flujo_de_entrada.getNext(); &amp;nbsp;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;flujo_de_entrada.getNext(); &amp;nbsp;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;posicionEstudiada++;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (posicionEstudiada &amp;lt; long_array)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw (new Exception(&amp;quot;La longitud propuesta de la soluci&amp;#243;n es&amp;quot; +&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;mayor que el tama&amp;#241;o del stream.Situaci&amp;#243;n no valida&amp;quot;));&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return array_solucion;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt;Lo he dejado sin comentarios pero creo que se sigue bien.&lt;/p&gt;
&lt;p&gt;SaludOs.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=44338" width="1" height="1"&gt;</description></item><item><title>re: todos por igual</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/16/todos-por-igual.aspx#43946</link><pubDate>Sat, 20 Oct 2007 11:58:08 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:43946</guid><dc:creator>phobeo</dc:creator><description>&lt;p&gt;suge: Hey! De sentirlo nada! Lo importante es ir proponiendo soluciones y ver como se ajustan o no (estamos aqui para &amp;quot;formarnos mentalmente&amp;quot; y no tanto para &amp;quot;dar con la solucion correcta&amp;quot;, eso lo dejamos para el trabajo };D)&lt;/p&gt;
&lt;p&gt;Como ya comente, creo que puedes cambiar la solucion que proponias... aunque claro, requiere ir haciendo recorridos para actualizar los valores de tu tabla cada vez. Sin embargo, la solucion que acabas de proponer parece mas sencilla... y usa memoria constante (solo necesita un contador y el generador de numeros aleatorios)... a mi me gusta! }:) &lt;/p&gt;
&lt;p&gt;Te animas a mandar codigo para esa solucion? }:)&lt;/p&gt;
&lt;p&gt;serabe: Si, puedes usar mas memoria, of course. Pero como ya deje caer antes (y ya alguien se dio cuenta)... puede hacerse con muy poquita memoria extra! };)&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=43946" width="1" height="1"&gt;</description></item><item><title>re: todos por igual</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/16/todos-por-igual.aspx#43666</link><pubDate>Fri, 19 Oct 2007 11:38:43 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:43666</guid><dc:creator>Serabe</dc:creator><description>&lt;p&gt;Para resolver tu duda necesito hacer una pregunta... &amp;#191;puedo tener m&amp;#225;s variables a parte del n y del array?&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=43666" width="1" height="1"&gt;</description></item><item><title>re: todos por igual</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/16/todos-por-igual.aspx#43653</link><pubDate>Fri, 19 Oct 2007 10:54:18 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:43653</guid><dc:creator>suge.</dc:creator><description>&lt;p&gt;Gracias por la bienvenida. Y lo siento por la cagada :-). Mira que no tener en cuenta el que un numero pudiera aparecer en la salida un n&amp;#250;mero de veces mayor que el n&amp;#250;mero de veces que aparece en la entrada !!!.&lt;/p&gt;
&lt;p&gt;Gr&amp;#225;cias por la atenci&amp;#243;n. Creo que tendr&amp;#233; que revisar los planteamientos porque si lo mantengo m&amp;#225;s o menos igual y repito el sorteo en caso de que el valor que salga haya alcanzado su numero m&amp;#225;ximo de apariciones , y haciendo una traza sencilla, veo que no cumplo la equiprobabilidad. Lo pienso mejor.&lt;/p&gt;
&lt;p&gt;De todas formas e tenido intuici&amp;#243;n (digo intuici&amp;#243;n por que ahora me faltan matematicas para poder comprobarlo), y solo lo he probado haciendome una traza a mano y parece que no va mal. A ver que te parece:&lt;/p&gt;
&lt;p&gt;Leemos el primer elemento y lo metemos en la primera posici&amp;#243;n del array, leemos el segundo y a la segunda y as&amp;#237; hasta llenarlo (los k primeros). Una vez que lo tenemos ah&amp;#237; leemos el siguiente k+1. Calculamos un entero aleatorio(lo llamo j) entre 1 (supongo arrays con posici&amp;#243;n inicial 1) y k+1 ; si es menor o igual &amp;nbsp;que k (j&amp;lt;=k) colocamos el elemento en la posici&amp;#243;n j del array , si no seguimos con el siguiente elemento .Calculamos un aleatorio entre 1 y k+2; si es menor que k a la posici&amp;#243;n correspondiente del array , si no seguimos con el siguiente, …. Y &amp;nbsp;as&amp;#237; hasta el elemento N.&lt;/p&gt;
&lt;p&gt;&amp;#191;Qu&amp;#233; tal suena?.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=43653" width="1" height="1"&gt;</description></item><item><title>re: todos por igual</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/16/todos-por-igual.aspx#43635</link><pubDate>Fri, 19 Oct 2007 08:20:24 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:43635</guid><dc:creator>Tio_Luiso</dc:creator><description>&lt;p&gt;Me parece (seguramente me equivoco) que a menos que conozca el tama&amp;#241;o de N, la muestra que tome no ser&amp;#225; equiprobable. Al menos siguiendo mi aproximaci&amp;#243;n.&lt;/p&gt;
&lt;p&gt;Si conozco el tama&amp;#241;o de N, podr&amp;#237;a tomar K enteros aleatorios desde 0 hasta el tama&amp;#241;o de N menos uno (sin repetici&amp;#243;n), y obtener los K elementos de N con un solo recorrido.&lt;/p&gt;
&lt;p&gt;Si no conozco el tama&amp;#241;o de N, puedo acotar N diciendo que es como poco igual de grande que K y obtener los K elementos de este subconjunto de N. Pero estar&amp;#237;amos despreciando los elementos del resto de N, y por lo tanto, la muestra no ser&amp;#237;a equiprobable. De hecho, ocurrir&amp;#225; lo mismo con cualquier l&amp;#237;mite arbitrario que establezca para los n&amp;#250;meros aleatorios, a menos que este l&amp;#237;mite sea exactamente el tama&amp;#241;o de N, en cuyo caso, los n&amp;#250;meros aleatorios que obtengamos ser&amp;#225;n elementos equiprobablemente aleatorios de N. &amp;#191;No?&lt;/p&gt;
&lt;p&gt;Obviamente me estoy confundiendo en alg&amp;#250;n punto.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=43635" width="1" height="1"&gt;</description></item><item><title>re: todos por igual</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/16/todos-por-igual.aspx#43439</link><pubDate>Thu, 18 Oct 2007 17:49:35 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:43439</guid><dc:creator>phobeo</dc:creator><description>&lt;p&gt;buenas! perdon por el retraso en responder, llevo ayer y hoy de viajes y sin conexion!&lt;/p&gt;
&lt;p&gt;serabe: tu primera idea ya has visto que no funcionaria porque no respeta lo que comentabamos de la equiprobabilidad. Tu segunda aproximacion entiendo que es coleccionar los pares de (valor - numero de apariciones) de forma similar a como sugiere despues suge (ver comentario mas abajo) pero lo que no me queda claro es que harias luego con ellos, ni por que solo guardas m/2 valores. Puedes dar mas detalles?&lt;/p&gt;
&lt;p&gt;Tio_Luiso: jejeje... como siempre muy avispado! Efectivamente, si tuvieramos un array o un metodo Reset() para volver atras, seria mucho mas facil... pero no los tenemos... aunque los comentarios que dejas son muy buenos como &amp;quot;pista&amp;quot; };D&lt;/p&gt;
&lt;p&gt;Como comentas justo despues... si lo volcamos todo a una lista, tendriamos la posibilidad de hacer lo que dijiste en el primer comentario pero... la cuestion es: hace falta? Dejo una pista debajo del comentario, por si quieres leerla&lt;/p&gt;
&lt;p&gt;suge: Bienvenido! Si, aceptamos pseudocodigo, C#, Java, Ruby... incluso Visual Basic! La mayoria de problemas son mas para &amp;quot;investigar&amp;quot; algo que para explicar &amp;quot;caracteristicas&amp;quot; de lenguajes... aunque tambien dejaremos caer alguno mas especifico }:)&lt;/p&gt;
&lt;p&gt;En cuanto a tu solucion: efectivamente, podria funcionar, pero necesitaria una peque&amp;#241;a modificacion: Imagina el caso del flujo que mencionabamos que tenia un dos por cada cuatro unos. En este caso, tu estructura de sorteo quedaria como:&lt;/p&gt;
&lt;p&gt;valor: 1 extremo: 7&lt;/p&gt;
&lt;p&gt;valor: 2 extremo: 9&lt;/p&gt;
&lt;p&gt;Peeeeero que pasaria si las 5 veces nuestra funcion aleatoria devuelve un 8? (puede pasar, es una funcion aleatoria) No existe niguna posibilidad de que una muestra tenga mas instancias de un elemento (doses, en este caso) que las que tenemos en el flujo. &lt;/p&gt;
&lt;p&gt;A mi se me ocurren dos formas de modificar tu algoritmo para que funcione correctamente. Si te animas a buscarlas, podrias intentar despues buscar otra solucion &amp;quot;sin almacenar tantos datos&amp;quot; };)&lt;/p&gt;
&lt;p&gt;Y por ultimo, como dije antes, voy a dejar otra pista por si alguien de los que &amp;quot;casi&amp;quot; lo tiene se anima a dar una solucion aun mas optima... no leais si quereis hacerlo sin pistas!&lt;/p&gt;
&lt;p&gt;pista:&lt;/p&gt;
&lt;p&gt;Con los comentarios que han dado, podeis dar una solucion que usa memoria constante, no importa lo grande que sea N &lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=43439" width="1" height="1"&gt;</description></item><item><title>re: todos por igual</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/16/todos-por-igual.aspx#43387</link><pubDate>Thu, 18 Oct 2007 13:59:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:43387</guid><dc:creator>suge</dc:creator><description>&lt;p&gt;Hola. Soy nuevo en esto y no se si tendr&amp;#237;a que ponerlo en pseudocodigo o no. Lo pongo en literatura y si hace falta lo codifico cuando tenga un rato. Como lo veo ser&amp;#237;a algo as&amp;#237; :&lt;/p&gt;
&lt;p&gt;Vamos rellenando una lista de duplas, con los valores que van saliendo y su n&amp;#250;mero de apariciones. Supongamos que nos queda una lista como la siguiente:&lt;/p&gt;
&lt;p&gt;Valores &amp;nbsp;Apariciones &lt;/p&gt;
&lt;p&gt;--------------------------&lt;/p&gt;
&lt;p&gt;3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5&lt;/p&gt;
&lt;p&gt;12 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;/p&gt;
&lt;p&gt;6 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4&lt;/p&gt;
&lt;p&gt;7 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3&lt;/p&gt;
&lt;p&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&lt;/p&gt;
&lt;p&gt;Una vez terminada la lista (terminada la lectura de los k valores), la recorremos &amp;nbsp;cambiando el valor apariciones por la suma de las anteriores -1 (esto &amp;#250;ltimo es por c&amp;#243;mo hacemos luego el sorteo). Tendr&amp;#237;amos algo como&lt;/p&gt;
&lt;p&gt;Valores ExtremoSup&lt;/p&gt;
&lt;p&gt;-------------------------&lt;/p&gt;
&lt;p&gt;3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4&lt;/p&gt;
&lt;p&gt;12 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 5&lt;/p&gt;
&lt;p&gt;6 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 9&lt;/p&gt;
&lt;p&gt;7 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;12&lt;/p&gt;
&lt;p&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;13&lt;/p&gt;
&lt;p&gt;Cuando estamos en este punto ya solo nos queda hacer un “sorteo” con N valores “premiados. Es decir un bucle for de 0 a N-1 con un randomize que nos de valores enteros entre 0 y K-1, &amp;nbsp; y cada valor aleatorio se compara con los llamados Extremos superiores de la lista por orden ; si es menor o igual que el valor con que se compara ya tenemos el elemento equi-probable para la posici&amp;#243;n N del array soluci&amp;#243;n, si no comparamos con el siguiente. &lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=43387" width="1" height="1"&gt;</description></item><item><title>re: todos por igual</title><link>http://geeks.ms/blogs/programancia101/archive/2007/10/16/todos-por-igual.aspx#43382</link><pubDate>Thu, 18 Oct 2007 13:17:06 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:43382</guid><dc:creator>Tio_Luiso</dc:creator><description>&lt;p&gt;Me contesto yo solo:&lt;/p&gt;
&lt;p&gt;Bas&amp;#225;ndome en lo que he propuesto, para que la muestra tomada fuera realmente equiprobable, el generador de enteros aleatorios tendr&amp;#237;a que devolver idealmente un entero aleatorio entre 1 y el tama&amp;#241;o de N. Si fuera menor, creo que la muestra no ser&amp;#237;a equiprobable. Y si fuera mayor, creo que tampoco.&lt;/p&gt;
&lt;p&gt;&amp;#191;Me equivoco mucho?&lt;/p&gt;
&lt;p&gt;Siempre nos queda la soluci&amp;#243;n cutre: Nos volcamos todo N en una estructura de acceso aleatorio, con lo cual, ya tendr&amp;#237;amos 2 cosas: 1.- poder acceder al elemento que queramos y 2.- Conocer el tama&amp;#241;o de N.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=43382" width="1" height="1"&gt;</description></item></channel></rss>