hola a todos, deseo comprender una linea de codigo que me dieron, es de numeros aleatorios con randnumero=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
el "?" es un if simplificado... basicamente ese codigo se traduce como
numero = rand() % 100 + 1;
if(numero <= 50){
numero = 1;
}else{
numero = 2;
}
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...
int i = rand() % 2 + 1;
si, es más facil... solo que esa persona quiso hacerlo como si fuera un porcental... pero al final de cuentas da lo mismo
Tengo una duda cuando haces un rand en C siempre que ejecutes en ese ordenador te va a dar el mismo número?
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)
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..