Título: Rellenar vector con 1 y -1 aleatoriamente Publicado por: kenonni en 24 Abril 2014, 00:11 am Hasta ahora lo mejor que he conseguido es esto, pero es problema es que rand() no trabaja con 0, si alguien me puede ayudar se lo agradecería.
#include <iostream> #include <cmath> using namespace std; int main() { int e=100; int M=2; int N=2; int Y=3; int T=2; double v[e]; double u[e]; for(int i=0; i< e+1;i++){ if (u==2){ u=0;} else { v = rand () % (N-M+1) + M; u = rand () % (T-Y+1) + Y; cout<<v-u<<endl;} } system("pause"); return 0; } Título: Re: Rellenar vector con 1 y -1 aleatoriamente Publicado por: engel lex en 24 Abril 2014, 01:34 am Código
realmente no se que intentaste con N-M XD ambos son 2 por otro lado... u y v son vector de 100 espacios de double... pero los llenas como si fueran numero... eso debería darte error i<e+1 no entiendo el por qué... debería darte un error... estás accediendo valores más allá del array cmath no contiene rand() es cstdlib tu codigo tiene muchos errores :s como compila? procura no usar nombres de variables en mayusculas... para tu problema panteado como tal debes hacer: rand()%2 eso devolverá 1 y 0 si es 1 lo dejas así, si es 0 lo multiplicas por -1 Título: Re: Rellenar vector con 1 y -1 aleatoriamente Publicado por: eferion en 24 Abril 2014, 09:50 am 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: Código
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. Código
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"? Código
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? ¿? Código
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: Código
Para sacar únicamente valores 1 y -1 hay varias opciones: Código
No hay límites a la imaginación. Título: Re: Rellenar vector con 1 y -1 aleatoriamente Publicado por: leosansan en 24 Abril 2014, 14:29 pm Como ya te comentaron, te sobra la librería <cmath> y te faltan la <cstlib> y <ctime> para el uso de rand y time, además de <iomanip> por si quieres que salgan separados una cierta distancia los 1 de los -1 y un k%25 para agruparlos en la salida de 25 en 25 y que no salgan un montón de 1 y -1 unos debajo de otros. Por no hablar de que no inicializas la semilla de los números aleatorios: Código
Por otro lado haces e=100 y después declaras u[e], es decir podrías haber hecho directamente u[100]. Pero si la idea es poder variar la dimensión del array, mejor usar un: Código
Y así sólo tienes que cambiar el valor de E en un solo sitio. Mi propuesta coincide con una de las propuestas por eferion, sólo que espaciando los 1 y -1 y una salida en bloques de 25 en 25: Código
¡¡¡¡ Saluditos! ..... !!!! (http://st.forocoches.com/foro/images/smilies/aaaaa.gif) Título: Re: Rellenar vector con 1 y -1 aleatoriamente Publicado por: kenonni en 9 Mayo 2014, 13:18 pm muchas gracias por todo!
|