Lo que quiero hacer es muy simple, a esta lista de listas
coeffs=[[1,1,1,2,1],[7,0,3,-4,3],[11,-6,0,3,-3]], le quiero multiplicar una lista que se crea aleatoriamente con 0 y 1, pero esta lista tiene solo 5 posiciones
ej:[[0], [0], [0], [0], [1]], lo que debo lograr es que esta lista multiplique a cada posición i de la lista coeffs.
coeffs[i][j] -> i=1...3 j=1...5 , no sé si queda claro
de todas maneras aqui va lo que estoy intentando
Código Python:
Ver original
def crea_sol_inicial(): vs=[] from random import randint for i in range(size): vs.append([randint(0,100)%2]) val=[] for i in range(csize): for j in range(size): aux=coeffs[i][j]*vs[j] val.append(aux) print val
El resultado de val es asqueroso...y en fin no es lo que quiero, un resultado valido seria que se formara una lista parecida a coeffs, lo unico q seria 0 y 1
Ej: val=[[1,1,0,0,0],[1,0,1,0,1],[1,1,0,1,0]], luego el paso a seguir es sumar todos esos 0 y 1 que me quedo en la lista y que fuera un solo valor, en ese caso seria 8.
El codigo en C esta escrito de esta manera, a lo mejor con eso entienden mejor
Código C:
Ver original
/* Verifica factibilidad */ int evalFactibility(int* vs) { for (int i = 0; i < CSIZE; i++) { int val = 0; for (int j = 0; j < SIZE; j++) { val += coeffs[i][j] * vs[j]; } } int* getRandomString() { int* vs = new int[SIZE]; vs[0] = 0; vs[1] = 0; vs[2] = 1; vs[3] = 1; vs[4] = 0; do { for (int i = 0; i < SIZE; i++) { } } while(!evalFactibility(vs)); return vs; }