Fonte originale di '(seme * 9301 + 49297)% 233280' algoritmo casuale?

9

Se cerchi esempi di creazione di un generatore di numeri casuali semisommersi (pseudo), ti imbatterai in cose del genere (esempio specifico link ):

// the initial seed
Math.seed = 6;

// in order to work 'Math.seed' must NOT be undefined,
// so in any case, you HAVE to provide a Math.seed
Math.seededRandom = function(max, min) {
    max = max || 1;
    min = min || 0;

    Math.seed = (Math.seed * 9301 + 49297) % 233280;
    var rnd = Math.seed / 233280;

    return min + rnd * (max - min);
}

Quei numeri specifici (9301, 49297, 233280) e l'algoritmo sono usati più volte, ma nessuno sembra avere un riferimento definitivo per questo. Chi ha inventato questo algoritmo e testato la distribuzione? C'è un foglio o qualcosa da citare?

    
posta jlarson 26.10.2014 - 20:14
fonte

1 risposta

7

Una rapida ricerca di Google Libri mostra che questi numeri (9301, 49297, 233280) sono stati utilizzati in numerosi riferimenti:

  • Ricette numeriche in FORTRAN 77
  • Introduzione ai metodi numerici in C ++
  • Risorsa dello sviluppatore CGI: programmazione Web in TCL e PERL
  • Fortran 77 efficace per ingegneri e tecnici Gli scienziati
  • Sviluppo JavaScript
  • Tutto su C
  • Esempi Java in poche parole
  • Algoritmi seminumerici
  • Introduzione alla meccanica

Il più vecchio è Metodi informatici per i calcoli matematici del 1977 di George Elmer Forsythe, Michael A. Malcolm, Cleve B. Moler (Prentice-Hall), sebbene Google non mostri dove è stato utilizzato il testo nel libro quindi non può essere verificato.

La prima che mostra il testo è Ricette numeriche in Pascal ( Prima edizione): The Art of Scientific Computing , Volume 1 di Press, Teukolsky, Vetterling e Flannery in una tavola a pagina intera di "Costanti per generatori di numeri casuali portatili". un overflow a 2 ^ 31.

Le serie di libri Numeriche ricette sono estremamente popolari e sono in stampa dal 1986.

    
risposta data 27.10.2014 - 22:17
fonte

Leggi altre domande sui tag