• Martes 5 de Noviembre de 2024, 15:56

Autor Tema:  Re: Hacer aleatorios!!!!!!!!!  (Leído 2173 veces)

Jhovanny

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Hacer aleatorios!!!!!!!!!
« en: Jueves 21 de Noviembre de 2002, 22:31 »
0
quiero generar diez numeros aleatorios sin que estos se repitan, osea generar los numeros 1,2,3,4,5,6,7,8,9,10
y guardarlos en un arreglo, para que queden mas o menos asi
num={2,4,5,7,8,9,6,1,3,10}
y despues hacer un ciclo y recorrer el arreglo para hacer esto
for(i=0;i<=9;i++)
{
switch(num)
case 1: printf("Atlas");
case 2. printf("America");
case 3: printf("Necaxa");
case 4. printf("Chivas");
case 5: printf("Puebla");
case 6. printf("Atlante");
case 7: printf("Morelia");
case 8. printf("Celaya");
case 9: printf("Toluca");
case 10. printf("Tigres");
}
}

y con el arreglo asi
num={2,4,5,7,8,9,6,1,3,10}
me imprima algo asi


America-Chivas
Puebla-Morelia
Celaya-Toluca
Atlante-Atlas
Necaxa-Tigres

entiendes lo estoy haciendo para hacer un juego pero no me sale espero que me des ideas gracias bye

Murciego

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
    • http://es.geocities.com/mclosbirrias
Re: Hacer aleatorios!!!!!!!!!
« Respuesta #1 en: Viernes 22 de Noviembre de 2002, 12:47 »
0
Donde dices que estudias informática y no sabes hacer esto???

Hacerlo directamente es imposible, puesto que el número de posibilidades es muy grande (10!).

Lo puedes hacer por pasos de la siguiente forma: Por planificacion de tareas:

Lo primero que debes hacer es colocar el número 1. Para ello generas un número del 1 al 10 y le asignas esa posición.

Luego tienes que colocar el 2 en una de las 9 casillas restantes. Para ello generas un número aleatorio del 1 al 9 y colocas el 2 en la casilla correspondiente (donde esta el 1 no cuenta).

Seguidamente tienes que colocar el 3 en una de las 8 casillas restantes, generando un número aleatorio entre 1 y 7 etc.....



Otra forma más sencilla, pero de la que no estoy seguro de que la probabilidad de cada permutación sea la misma (1/10!) es colocar los números consecutivamente, y despues con un "for" vas recorriendo el vector de atras hacia adelante intercambiando el elemento en cuestion con uno al azar del vector. En pseudocodigo seria:


for (i=10;i>=2;i--)
   {
    intercambiar(lista,lista[random(1,i-1)])
   }




Existen además otras muchas variantes y metodos más o menos sencillos.

Espero haberte servido de ayuda.


Un saludo
Javier Murciego

MaBeCa

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Hacer aleatorios!!!!!!!!!
« Respuesta #2 en: Sábado 14 de Diciembre de 2002, 12:22 »
0
aca te paso el codigo fuente
espero te sirva

suerte! =)
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

ender

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Hacer aleatorios!!!!!!!!!
« Respuesta #3 en: Domingo 15 de Diciembre de 2002, 09:57 »
0
para hacer esto, tienes una función en C/C++ llamada random(). El problema radica en que este random, no és aleatorio completamente, sino pseudoaletorio, ya que depende de una raiz que le introduzcas como parametro.
Si quieres que sea bastante aleatorio, genera esta raiz, con cosas que no puedas fijas, es decir, dia, hora , seg, mseg, (si estas conectado a un server) nº de usuarios conectados, clics de teclado o de raton que te pida el programa, cosas de este estilo. No te asustes, para hacer todo esto existen funciones en C de consulta de estos valores. De esta forma tendras un generador bastante aleatorio. Esto esta provado con un programa que generaba grafos (de forma aleatoria)y reoslvia el algorismo de Dijkstra.