Sto migrando un metodo che viene utilizzato per la decodifica da .NET Framework 1.1 a .NET Framework 4. Ho notato che l'implementazione di Random è stata modificata. Quindi, dato lo stesso seme, Random.NextBytes restituisce risultati diversi.Cambio implementazione su .NET's Random()
Quindi se eseguo il seguente codice.
byte[] bytes = new byte[4];
System.Random random = new System.Random(50);
random.NextBytes(bytes);
for(int i=0; i< bytes.Length; i++)
{
Console.WriteLine("bytes[" + i + "] = " + bytes[i]);
}
Sotto .NET Framework 1.1 restituisce:
bytes[0] = 216
bytes[1] = 124
bytes[2] = 183
bytes[3] = 58
Sotto .NET framework 4 restituisce:
bytes[0] = 154
bytes[1] = 49
bytes[2] = 183
bytes[3] = 48
Qual è il modo migliore per risolvere questo problema?
Qual è esattamente il problema? Il tuo programma dipende dalla particolare generazione di numeri casuali? – Stilgar
Sono con Stilgar. Random ha lo scopo di produrre risultati pseudo-casuali. Se hai bisogno di byte specifici, perché non inserire questi byte nel tuo codice? @ Moo-juice, ma se stai eseguendo l'aggiornamento a un framework successivo, tutti useranno la stessa implementazione dopo l'aggiornamento ...? – sheikhjabootie
@ Moo-Juice sicuro. Assicurati che le versioni siano compatibili prima di consentire ai client di connettersi. I giochi hanno fatto questo tipo di versioning per decenni. – Stilgar