Sábado 14 de Diciembre de 2024, 17:41
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Re: Hacer aleatorios!!!!!!!!!
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Re: Hacer aleatorios!!!!!!!!! (Leído 2196 veces)
Jhovanny
Nuevo Miembro
Mensajes: 3
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
Tweet
Murciego
Nuevo Miembro
Mensajes: 23
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
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
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.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Re: Hacer aleatorios!!!!!!!!!