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 originalclass Program
{
Random r;
static void Main(string[] args)
{
r = new Random();
// Aqui el resto del código
}
public int[] cruceenpunto(int[] individuo1, int[]individuo2)
{
int largo = individuo1.Length;
int[] individuonuevo = individuo1;
int j;
int k;
// Generamos un número entre dos valores dados
int aleatorio = r.Next(0, largo);
for (j = 0; j < aleatorio; j++)
{
codigo
}
return individuonuevo;
}
}