numeros aleatorios con rand

Iniciado por d91, 30 Agosto 2015, 16:52 PM

0 Miembros y 1 Visitante están viendo este tema.

d91

hola a todos, deseo comprender una linea de codigo que me dieron, es de numeros aleatorios con rand
Código (cpp) [Seleccionar]
numero=rand() % 100 + 1 <= 50 ? 1 : 2;
entiendo la parte que dice que el numero sera entre 1 y 100, pero ya no entiendo donde es menor o igual a 50, entre 1 y 2 agradezco su orientacion

engel lex

el "?" es un if simplificado... basicamente ese codigo se traduce como

numero = rand() % 100 + 1;
if(numero <= 50){
  numero = 1;
}else{
  numero = 2;
}
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.

Bob1098

Me ha surgido una duda con ese código. No sería mucho más fácil generar un numero aleatorio entre 1 y 2?. Igual me equivoco y si es así ruego que se me corrija...

Código (cpp) [Seleccionar]

int i = rand() % 2 + 1;

engel lex

si, es más facil... solo que esa persona quiso hacerlo como si fuera un porcental... pero al final de cuentas da lo mismo
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.

v4char

Tengo una duda cuando haces un rand en C siempre que ejecutes en ese ordenador te va a dar el mismo número?

engel lex

si no inicializas con una semilla, si, básicamente es porque se basa en una formula, e inicializar sin semilla es equivalente a iniciar con 0...

para eso usas
Citarsrand (time(NULL));

le pasará como semilla la fecha actual (unix)
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.

someRandomCode

Cita de: engel lex en  9 Septiembre 2015, 05:00 AM
si no inicializas con una semilla, si, básicamente es porque se basa en una formula, e inicializar sin semilla es equivalente a iniciar con 0...

para eso usas
le pasará como semilla la fecha actual (unix)

OJO con eso, no siempre.. En Linux/*BSD el kernel tiene una fuente de entropia para garantizar que srand/rand tengan valores diferentes aun si la semilla es la misma..
Utilizan la mas de las veces el motor de generacion de numeros aleatorios (ok, nunca aleatorios, pseudo aleatorios) que esta integrado en la pastilla con instrucciones dedicadas a ello..