Random 1 o 3

Iniciado por Baal_30, 28 Septiembre 2014, 19:23 PM

0 Miembros y 2 Visitantes están viendo este tema.

Baal_30

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.
«La suerte es el cuidado de los detalles». -Winston Churchill

engel lex

con la funcion
Código (cpp) [Seleccionar]
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 (cpp) [Seleccionar]
rand() % 2;

tu haces el resto :P
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Baal_30

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...
«La suerte es el cuidado de los detalles». -Winston Churchill

Caster

#3
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.

engel lex

solo dejo esto

2*0+1=1
2*1+1=3
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Baal_30

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 :/
«La suerte es el cuidado de los detalles». -Winston Churchill

Caster

#6
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.

Baal_30

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 :/
«La suerte es el cuidado de los detalles». -Winston Churchill

тαптяα

#8
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

rir3760

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language