Ho una grande stringa che ho bisogno di mescolare in modo sicuro. Sarà di circa 4000 caratteri. La permutazione risultante di tale stringa, deve essere una nell'insieme di tutte le possibili permutazioni (4000!). Naturalmente anche le permutazioni risultanti devono essere equamente distribuite tra tutti gli stati possibili. Devo dimostrare ragionevolmente che la mia implementazione soddisfa quei requisiti, ma i metodi formali non sono necessari.
Stavo pensando di usare un semplice Knuth-Fisher-Yates per questo, ma mi preoccupo per il mio RNG. Sono obbligato ad implementarlo in JavaScript, poiché la mia applicazione deve essere eseguita in Thunderbird. Da (cosa posso leggere) [ link , Mozilla può fornire un valore casuale crittograficamente sicuro, e ho intenzione di combinarlo con questo [ link per ottenere numeri casuali nell'intervallo desiderato.
Ora, credo che potrei avere problemi con lo spazio interno dello stato del PRNG. Se ne ha poche, si "avvolge" e produce un pregiudizio per certi numeri. Se ne ha troppi, potrebbe applicare modulo per ridimensionare, producendo anche un bias per i numeri nella gamma inferiore.
Per quanto tempo ho bisogno di inizializzare un PRNG usato per KFY-Shuffle una stringa di 4000 caratteri? Sto pensando troppo a questo, c'è qualcosa a cui non ho pensato?