Buenas, necesito que el programa me de un 1 o un 3 aleatoriamente, ¿hay alguna manera de hacerlo? Quiero que me de 1 o 3, sólo uno de esos dos, y aleatoriamente.
Gracias de antemano.
con la funcion
rand()
obtienes un random entero
con modulo de 2 lo limitas a 0 y 1
y un poco de matemática resuelve...
te dejo....
rand() % 2;
tu haces el resto :P
Hasta ahí llegué, lo que me falta es la "matemática" esa :/
Si lo pongo con % 2, he pensado en sumar uno, pero daría 1 ó 2...
Una solución podría ser con un if, si es 0 que sume 1 y sino que sume 2. También comparando el valor que devuelve, si es 0 que asigne el valor 1 a una variable y si es 1 que asigne el valor 3.
Saludos.
solo dejo esto
2*0+1=1
2*1+1=3
2 * rand + 1 ¿?
Que crack engel, ni se me había ocurrido ¡!
Caster eso es lo que he probado hasta ahora, pero gracias de todos modos ^^
Pero xe, no se que pasa que no me sale bien el programa :'( Quiero hacer un programa que le de aleatoriamente un número del 1 al 3 a tres personas y que no se repitan, y no logro hacerlo :/
Cita de: Baal_30 en 28 Septiembre 2014, 20:23 PM
2 * rand + 1 ¿?
Que crack engel, ni se me había ocurrido ¡!
Caster eso es lo que he probado hasta ahora, pero gracias de todos modos ^^
Pero xe, no se que pasa que no me sale bien el programa :'( Quiero hacer un programa que le de aleatoriamente un número del 1 al 3 a tres personas y que no se repitan, y no logro hacerlo :/
Según lo que dices ahora, no es lo mismo que pides al principio del post. Un número del 1 al 3 sería 1, 2 o 3 y dijiste un 1 o un 3.
Si lo que quieres es asignar un 1 o un 3 a 3 personas diferentes se tiene que repetir uno de los dos obligatoriamente.
Un saludo.
No, no, lo primero que pedía era porque estaba haciendo el código, y puse un if que si era 2 el primer random, el siguiente pudiera ser sólo 1 o 3... pero me ha salido todo mal :/
Cita de: Baal_30 en 28 Septiembre 2014, 21:01 PM
No, no, lo primero que pedía era porque estaba haciendo el código, y puse un if que si era 2 el primer random, el siguiente pudiera ser sólo 1 o 3... pero me ha salido todo mal :/
Jajajajajajajaja
PD: puedes hacer dos comprobaciones, una con lo que te ha dicho engel, y otra comprobando el numero anterior y asegurandose que aleatoriamente no ha vuelto a salir ese dos.
Todo es guardarse esos numeros en variables, y hacer comprobaciones
Cita de: Baal_30 en 28 Septiembre 2014, 21:01 PMNo, no, lo primero que pedía era porque estaba haciendo el código, y puse un if que si era 2 el primer random, el siguiente pudiera ser sólo 1 o 3
Solo tienes que colocar los números a
seleccionar en un array y utilizar la función rand para
seleccionarlos aleatoriamente. Un ejemplo:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int num[] = {1, 2, 3};
int i;
int j;
srand((unsigned) time(NULL));
for (i = 3; i > 0; i--){
j = rand() % i;
printf("%d\n", num[j]);
num[j] = num[i - 1];
}
return EXIT_SUCCESS;
}
Un saludo
ummm suena lógico, pero no logro entender el código :/