Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/10/2013, 00:57
Avatar de Malenko
Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: random en c# dentro de funcion no se genera nuevo al llamarla

El problema es que los valores que genera Random no son auténticamente aleatorios, sino que son pseudoaleatorios. Para que cada vez que llames a la función genere un valor diferente, la variable "r" ha de ser global a todo el programa y la inicializas en el main, de forma que en la función unicamente te quede la llamada a Next.

Tendría que quedar estructurado algo así:

Código C:
Ver original
  1. class Program
  2. {
  3.         Random r;
  4.  
  5.         static void Main(string[] args)
  6.         {
  7.                  r = new Random();
  8.  
  9.                 // Aqui el resto del código
  10.         }
  11.  
  12.         public int[] cruceenpunto(int[] individuo1, int[]individuo2)
  13.         {
  14.                 int largo = individuo1.Length;
  15.                 int[] individuonuevo = individuo1;
  16.                 int j;
  17.                 int k;
  18.  
  19.                 // Generamos un número entre dos valores dados
  20.                 int aleatorio = r.Next(0, largo);
  21.  
  22.                 for (j = 0; j < aleatorio; j++)
  23.                 {
  24.                         codigo
  25.                 }
  26.  
  27.                 return individuonuevo;
  28.         }
  29. }
__________________
Aviso: No se resuelven dudas por MP!