Compartiendo un ejercicio de selección aleatoria (C#)

Iniciado por erest0r, 7 Junio 2014, 22:24 PM

0 Miembros y 1 Visitante están viendo este tema.

erest0r

Hola, como decidi empezar a practicar C# .NET , de lo poco que he podido aprender aqui dejo un ejercicio resuelto de seleccion aleatoria por si a alguien le interesa:

Código (csharp) [Seleccionar]

using System;

namespace Prueba1
{
   /*
       Un asesino, cansado de elegir sus victimas de la manera habitual, decide hacer la seleccion de una manera mas especial
       para esto decide seleccionarlas aelatoriamente. Cree un programa que le permita agrupar a sus posibles victimas y asignarles
       un numero y que sea el programa quien decida a quien debe asesinar al momento de que le apetesca para esto debe tener en
       consideracion la siguiente condicion:
           *Una vez seleccionado una victima , el sistema debera omitir esta persona en la proxima busqueda,de manera que nunca salga
           la misma posicion dos veces.
    */
   class Program
   {
       static void Main(string[] args)
       {
           Console.WriteLine("--------------Asesino Serial--------------");
           Console.Write("Ingrese cuantas personas se asesinaran: ");
           int victimas = int.Parse(Console.ReadLine());
           
           Asesino asesino = new Asesino(victimas);

           while (asesino.cantVictimasAsesinada != victimas)
           {
               Console.WriteLine("Persona asesinada: {0}", asesino.asesinar());
           }
           
           Console.ReadLine();
       }
   }

   class Asesino
   {
       
       private int[] victimas;

       // Indica el numero de la victima cayo aleatoriamente
       private int victima;

       // LLevamos la cuenta de cuantas victimas han sido asesinadas
       private int victimasAsesinadas;
       public int cantVictimasAsesinada { get { return victimasAsesinadas; } }

       // Nuestro objeto que trabajara con variables aleatorias
       Random random;
       public Asesino(){ }
       public Asesino(int victimas)
       {

           victimasAsesinadas = 0;
           this.victimas = new int[victimas];
           for (int i = 0; i < this.victimas.Length; i++)
           {
               this.victimas[i] = i + 1;
           }

           random = new Random();
       }

       public int asesinar()
       {
           do
           {
               victima = random.Next(0, victimas.Length);
           } while (victimas[victima] == 0);

           // Establecemos la posicion de la casilla en 0 para indicar que la victima ya fue seleccionada
           victimas[victima] = 0;

           // Aumentamos el numero de victimas asesinadas
           victimasAsesinadas++;

           return victima + 1;
       }
   }
}
Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.