Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Baal_30 en 28 Septiembre 2014, 19:23 pm



Título: Random 1 o 3
Publicado por: Baal_30 en 28 Septiembre 2014, 19:23 pm
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.


Título: Re: Random 1 o 3
Publicado por: engel lex en 28 Septiembre 2014, 20:02 pm
con la funcion
Código
  1. rand()
obtienes un random entero

con modulo de 2 lo limitas a 0 y 1

y un poco de matemática resuelve...

te dejo....
Código
  1. rand() % 2;

tu haces el resto :P


Título: Re: Random 1 o 3
Publicado por: Baal_30 en 28 Septiembre 2014, 20:08 pm
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...


Título: Re: Random 1 o 3
Publicado por: Caster en 28 Septiembre 2014, 20:09 pm
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.


Título: Re: Random 1 o 3
Publicado por: engel lex en 28 Septiembre 2014, 20:18 pm
solo dejo esto

Código:
2*0+1=1
2*1+1=3


Título: Re: Random 1 o 3
Publicado por: 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 :/


Título: Re: Random 1 o 3
Publicado por: Caster en 28 Septiembre 2014, 20:25 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.


Título: Re: Random 1 o 3
Publicado por: 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 :/


Título: Re: Random 1 o 3
Publicado por: тαптяα en 29 Septiembre 2014, 10:23 am
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


Título: Re: Random 1 o 3
Publicado por: rir3760 en 29 Septiembre 2014, 17:03 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
Solo tienes que colocar los números a seleccionar en un array y utilizar la función rand para seleccionarlos aleatoriamente. Un ejemplo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int main(void)
  6. {
  7.   int num[] = {1, 2, 3};
  8.   int i;
  9.   int j;
  10.  
  11.   srand((unsigned) time(NULL));
  12.  
  13.   for (i = 3; i > 0; i--){
  14.      j = rand() % i;
  15.      printf("%d\n", num[j]);
  16.      num[j] = num[i - 1];
  17.   }
  18.  
  19.   return EXIT_SUCCESS;
  20. }

Un saludo


Título: Re: Random 1 o 3
Publicado por: Baal_30 en 29 Septiembre 2014, 22:15 pm
ummm suena lógico, pero no logro entender el código :/