elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  rand() algo prohibido
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: rand() algo prohibido  (Leído 4,105 veces)
Komodo


Desconectado Desconectado

Mensajes: 352



Ver Perfil
rand() algo prohibido
« en: 31 Agosto 2010, 10:57 am »

Bueno todos sabemos para lo que sirve rand() y srand() y que el RAND_MAX vale 0x7FFFU (32767)

Vamos que el mayor número pseudo-aleatorio que nos puede retornar un programa que use rand() es 32767..

Pero me pudo la curiosidad.

Código
  1. #include <iostream>
  2. #include <cstdlib> //tiene la definicion de la funcion RAND (random)
  3. using namespace std;
  4. int main ()
  5. {
  6.  int cantidad;
  7.  cout << "Cuantos numeros quiere generar?" << endl;
  8.  cin >> cantidad;
  9.  for (int contador =1 ; contador <= cantidad ; contador++)
  10.    {
  11.      cout << "\n" <<(rand()%50000+40000);
  12.    }
  13.  return 0 ;
  14. }

Y si, como no hay semilla pues como que siempre saldran los mismos numeros, pero todos ellos son mayores de 32767 yo me esperaba algun error algo raro, pero veo que eso del valor máximo se lo salta.

Saludos y lo corro desde Windows.

Ahora lo probare desde GNU/Linux


En línea


Castiblanco


Desconectado Desconectado

Mensajes: 2.438


Ver Perfil WWW
Re: rand() algo prohibido
« Respuesta #1 en: 31 Agosto 2010, 13:49 pm »

No entendí muy bien :p

Osea el número máximo que puedes obtener es 32767, hasta ahí bien pero te asombras porque le salen números mayores?

Aquí no le estas sumando un cantidad grande, entonces como te va a dar menos de 32767...

Código
  1. cout << "\n" <<(rand()%50000+40000);

Si estoy mal me corriges hasta ahora comienzo a aprender.

Saludos...


En línea

Castiblanco


Desconectado Desconectado

Mensajes: 2.438


Ver Perfil WWW
Re: rand() algo prohibido
« Respuesta #2 en: 31 Agosto 2010, 14:49 pm »

La verdad sí XD

Bueno entonces... esa linea saca un número al random creo bien hasta aquí? luego le saca el residuo del número que le dio contra 50000 como ese número no puede ser tan grande da el mismo número y al final le suma 40k

Si hace eso?
En línea

rob1104


Desconectado Desconectado

Mensajes: 340


Usuario común


Ver Perfil WWW
Re: rand() algo prohibido
« Respuesta #3 en: 31 Agosto 2010, 16:59 pm »

La verdad sí XD

Bueno entonces... esa linea saca un número al random creo bien hasta aquí? luego le saca el residuo del número que le dio contra 50000 como ese número no puede ser tan grande da el mismo número y al final le suma 40k

Si hace eso?
Efectivamente hace eso.

Segun veo es una confusión nada mas. Ya que rand() como debe ser genera numeros hasta 32767, pero al final le esta sumando los 40000, lo cual es una operacion aparte. En fin, espero que sea eso :S
En línea

Sin análisis de requisitos o sin diseño, programar es el arte de crear errores en un documento de texto vacío.
Castiblanco


Desconectado Desconectado

Mensajes: 2.438


Ver Perfil WWW
Re: rand() algo prohibido
« Respuesta #4 en: 31 Agosto 2010, 23:26 pm »

Yo igual. pero como Lord R.N.A. habla con tanta seguridad y no se siento que me dice que no es verdad, me la pase pensando en el bus si estaba en lo cierto y no vi que estuviera cometiendo errores :p

Saludos...
En línea

Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: rand() algo prohibido
« Respuesta #5 en: 31 Agosto 2010, 23:30 pm »

Ademas de lo que dijo rob1104, cabe destacar que la constante RAND_MAX depende de la plataforma.


He borrado y reportado algunos mensajes. Si no saben comportarse por favor, no posteen.

En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Komodo


Desconectado Desconectado

Mensajes: 352



Ver Perfil
Re: rand() algo prohibido
« Respuesta #6 en: 2 Septiembre 2010, 11:20 am »

Muy bien, gracias.

Saludos.
En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
programas con srand y rand
Programación C/C++
lokita_sarah 1 2,306 Último mensaje 1 Diciembre 2011, 04:28 am
por ralymontes
Problemas con rand
Programación C/C++
luchomax 2 2,078 Último mensaje 2 Febrero 2012, 00:45 am
por rir3760
[Solucionado]Problema con rand() y arreglos.
Programación C/C++
GROV 2 3,792 Último mensaje 16 Julio 2012, 21:32 pm
por GROV
Rellenar con rand no me funciona
.NET (C#, VB.NET, ASP)
luis456 7 4,320 Último mensaje 2 Abril 2015, 05:33 am
por luis456
Problema con rand()
Programación C/C++
MrDev 6 2,482 Último mensaje 12 Abril 2016, 23:42 pm
por MrDev
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines