array random shuffle

random - array - shuffle list c#



¿El mejor método para generar un número con 256 bits aleatorios? (4)

La forma correcta de barajar un mazo de cartas es con un Knuth Shuffle . Es simple y perfecto. El significado perfecto es que todas las posibles ordenaciones de cartas son igualmente probables, suponiendo el uso de un buen RNG.

¿Cuál es el mejor método para generar un número con 256 bits aleatorios?

¿Concatenan los bytes aleatorios?

byte[] data = new byte[32]; RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); rng.GetNonZeroBytes(data); // should include zero bytes? string number = BitConverter.ToString(data, 0).Replace("-", "");

Además, ¿sería apropiado ordenar un mazo de cartas usando no duplicados de estos números?


Si el generador de bytes aleatorios es bueno, cualquier método funciona igual de bien, y también es apropiado el enfoque de barajar cartas.


Si puede o no concatenar bytes aleatorios depende del generador de números aleatorios que esté utilizando. Algunos generadores de números aleatorios muestran una correlación serial. Para estos generadores de números aleatorios, concatenar sería malo.

Si está utilizando estos números aleatorios con fines criptográficos, debe mirar Blum Blum Shub . De lo contrario, mira el Mersenne Twister .

Para barajar un conjunto finito, mira la mezcla de Fisher-Yates .


sí, concatenar bytes aleatorios funcionaría.

EDITAR: No estoy seguro de por qué necesitaría 256 bits para barajar una baraja de cartas, ¿puede ampliar esa parte más?