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


 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Como puedo utilizar un numero random en un bucle sin que se repita?(cs)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como puedo utilizar un numero random en un bucle sin que se repita?(cs)  (Leído 493 veces)
Reent

Desconectado Desconectado

Mensajes: 52



Ver Perfil
Como puedo utilizar un numero random en un bucle sin que se repita?(cs)
« en: 25 Julio 2019, 17:08 »

Código
  1. for (int i = 0; i < questions.Length; i++)
  2.            {
  3.  
  4.                Random rQuestions = new Random(Guid.NewGuid().GetHashCode());
  5.                int rQ = rQuestions.Next(9);
  6.                Console.WriteLine(questions[rQ]);
  7.                Console.WriteLine(answers[rQ]);
  8.                int iTry = int.Parse(Console.ReadLine());
  9.  
  10.                if (iTry == rAnswers[rQ])
  11.                {
  12.                    points++;
  13.                    Console.WriteLine("Great!!");
  14.                }
  15.                else
  16.                {
  17.                    Console.WriteLine("False!!");
  18.                }
  19.                Console.WriteLine();
  20.            }


Mod: Obligatorio el uso de etiquetas GeSHi. Los temas sobre C# van a su correspondiente subforo.


« Última modificación: 26 Julio 2019, 09:50 por #!drvy » En línea

NEBIRE


Desconectado Desconectado

Mensajes: 2.335


Ver Perfil
Re: Como puedo utilizar un numero random en un bucle sin que se repita?(cs)
« Respuesta #1 en: 26 Julio 2019, 20:20 »

Creas un array con suficientes números random (puedes asegurarte que no se repitan, o que no se repitan más de x veces)

En tu bucle luego tomas el nº random que yace en el array cuyo ciclo estás.

Obviamente si el bucle es muy muy grande (pongamos 1 millón), tu array debe ser de dicho tamaño, pero si es enormemente más grande, no resulta práctico, y en algún momento deberían repetirse...


Ahora, si lo que necesitas es que aparezca 1 sola vez todos los números de una lista, es más práctico hacer lo siguiente:
1 - Creas un array de dicho tamaño, en el primer bucle incluyes dichos valores, pongamos que quieres que que aparezcan una sola vez los valores del 35 al 53

Código:
declarar Array(0 a 53-35)

bucle para k desde 0 hasta 53-35
    array(k) = (k + 35)
siguiente

2 - ...pero están ordenados, como los quieres aleatorios hay que desordenarlos:
Código:
bucle para k desde 53-35 hasta 1 regresiva
    az = Random(entre 0 y k)
        
    tmp = Array(az)
    Array(az) = Array(k)
    Array(k) = tmp
siguiente

3 - Ahora ya podrás obtener los valores random, usarlos en tu bucle, y sin reptición... los tomas en orden del array porque en el array ya están colocados al azar y sin repetición (en el ejemplo valores solo del 35 al 53).

Código:
bucle para k desde 0 hasta 53-35
   valor = array(k)
   ...
siguiente


« Última modificación: 26 Julio 2019, 20:24 por NEBIRE » En línea

WHK
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.328


The Hacktivism is not a crime


Ver Perfil WWW
Re: Como puedo utilizar un numero random en un bucle sin que se repita?(cs)
« Respuesta #2 en: 27 Julio 2019, 05:19 »

Todo va a depender la cantidad de valores que necesites, por ejemplo, si esto es una tarea eso quiere decir que debes unir las matemáticas. Por ejemplo, usas una variable para guardar el último valor creado, por defecto es cero, el nuevo valor es igual a ese valor guardado mas un numero random, luego el resultado lo guardas en la variable para generar el nuevo valor, esto asegurará que cada valor sea único.

Si necesitas algo práctico, necesitarás guardar todos los resultados y omitirlos de los resultados, pero es mas complicado, necesitarás forzadamente una base de datos ya sea en memoria, fs o sql.

Si necesitas hacer una app que genere identificadores únicos entonces debes utilizar un estandar que ya fue diseñado para ello y es el UUID, .Net lo soporta nativamente:

https://docs.microsoft.com/en-us/dotnet/api/system.guid.newguid?redirectedfrom=MSDN&view=netframework-4.8#System_Guid_NewGuid

Saludos.
En línea

Telegram: @WHK102 - Semáforo Epidemiologico Chile
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Numero Aleatorio en PHP o MYSQL pero que NO se repita nunca
PHP
MakiaResc 9 19,708 Último mensaje 29 Marzo 2008, 07:45
por Override
Random que no repita resultados
PHP
carlosuc99 9 2,718 Último mensaje 20 Octubre 2012, 17:42
por WarGhost
como puedo imprimir con printf sin que se repita tanto por while?
Programación C/C++
Belial & Grimoire 7 2,903 Último mensaje 13 Mayo 2013, 20:11
por WHK
ayuda con un numero que se repita
Programación C/C++
daniel010 2 1,174 Último mensaje 13 Septiembre 2013, 03:02
por GenR_18
Ayuda!!! comparar que no se repita ningun numero en el array (Java)
Java
afrocardo 5 4,092 Último mensaje 4 Abril 2016, 17:20
por esjuleta
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines