una rifas rifa resultado programa para online numero nombres lista hacer generador como azar aplicacion algorithm

algorithm - rifas - Crear una lista ordenada al azar de una lista ordenada



random programa (7)

Depende de lo que necesita para "aleatoriedad". La forma más fácil es probablemente pasar todos los elementos en un conjunto de hash e iterar sobre el resultado. El orden que obtenga será determinista, pero para la mayoría de los intentos y propósitos puede considerarse aleatorio. Alternativamente, puede generar números aleatorios entre [0..length] de la lista, seleccionando elementos y empujándolos a una nueva lista. Suponiendo que la eliminación de la lista sea a tiempo constante, el resultado sería una lista aleatoria generada con la eficiencia O (n).

Tengo una aplicación que toma los resultados de calidad para un proceso de fabricación y crea gráficos para mostrar los gráficos de Pareto de los malos, y también para mostrar el rendimiento de producción.

Para automatizar la tarea de probar estos procedimientos estadísticos, me gustaría determinar de manera determinista registros en la base de datos y hacer que la tecnología de calidad vaya a ciertos gráficos y compararlos con un gráfico bueno conocido. Pero también me gustaría simular los resultados para que entren en la base de datos como si un usuario estuviera ejecutando el proceso de prueba.

Una idea que he tenido es completar una lista con números buenos, j número bad1, k número malo 2, etc. Y de alguna forma ordenar la lista al azar antes de insertarla en la base de datos.

Entonces, mi pregunta, ¿hay un algoritmo estándar para tomar una lista ordenada de valores y crear una lista ordenada aleatoriamente?




Una respuesta simple es tener una matriz o vector, recorrer una vez, y para cada posición visitada, elegir un elemento al azar del resto de la lista e intercambiarlo con el elemento actual.
Necesita un generador de números aleatorios razonable para esto.


la forma en que solía hacer esto era tener un ciclo que se ejecutaba varias veces que generaría dos números aleatorios entre 0 y la longitud de la lista, luego intercambia esos dos elementos.


Random rnd = new Random(); List<int> orderedList = new List<int>(); List<int> randomList = new List<int>(); while (orderedList.Count != 0) { int index = rnd.Next(0, orderedList.Count); randomList.Add(orderedList[index]); orderedList.RemoveAt(index); }