tu codigo tiene muchos errores :s como compila?
Directamente no compila. No se ha molestado ni tan siquiera en corregir los errores de compilación:
-     int e=100; 
-   
-     double v[e]; 
-     double u[e]; 
-   
Para que esto compile, "e" debe ser constante... y no lo es... o pones "e" como constante o usas new y delete para crear y destruir los vectores.
- if (u==2){ 
u es un arreglo... no se puede comparar con un entero así por las buenas... no tiene sentido... ¿Qué intentas comprobar aquí? ¿La posición de memoria? ¿El valor del primer elemento de "u"?
- u=0;} 
Lo mismo que en el apartado anterior. "u" es un arreglo o vector... ¿Pretendes cambiar el valor de algún elemento concreto? ¿La dirección apuntada por el arreglo? ¿?
- v = rand () % (N-M+1) + M; 
- u = rand () % (T-Y+1) + Y; 
No puedes convertir así a bote pronto un entero en un arreglo... estamos ante el mismo problema que en los dos casos anteriores... para acceder a una posición concreta de un arreglo, en tu caso "u" y "v", tienes que usar un índice ( u[0]=3, almacenamos un 3 en la primera posición del vector "u" )... obviamente ese índice puede venir dado por una variable:
- for ( int i=0; i < 4; i++ ) 
-   u[ i ] = i * 2; 
Además de todo esto, no queda claro si los valores de 1 y -1 vienen determinados por alguna expresión matemática o, como se puede intentar adivinar, simple azar.Para sacar únicamente valores 1 y -1 hay varias opciones:
- // una opcion 
- v[ i ] = ( rand( ) % 2 ) ? 1 : -1; 
-   
- // otra 
- int valores[] = { 1, -1 }; 
- v[ i ] = valores[ rand( ) % 2 ]; 
-   
- // otra 
- v[ i ] = -1 + 2 * ( rand( ) % 2 ); 
-   
- // esta suponiendo que v es un vector de tipo int, no float 
- v[ i ] = 1 ^ ( 0xFFFFFFFE * ( rand( ) % 2 ) ); 
No hay límites a la imaginación.