2017-10-09 14 views
0

Je vais essayer de comprendre la logique ci-dessous.comprendre la génération de pile de cartes au hasard

function bumps(m) { 
    var values = [], 
    i, 
    j, 
    w, 
    x, 
    y, 
    z; 
    for (var i = 0; i < m; ++i) { 
     values[i] = 0.1 + 0.1 * Math.random(); 
    } 

    for (var j = 0; j < 5; j++) { 
     x = 1/(0.1 + Math.random()); 
     y = 2 * Math.random() - 0.5; 
     z = 10/(0.1 + Math.random()); 
     for (var i = 0; i < m; i++) { 
      w = (i/m - y) * z; 
      values[i] += x * Math.exp(-w * w); 
     } 
    } 
    for (var i = 0; i < m; i++) { 
     values[i] = Math.max(0, values[i]); 
    } 
    return values; 
} 

Le code ci-dessus est extrait de http://bl.ocks.org/mbostock/3943967 et la fonction ci-dessus est utilisé pour afficher l'empilement de séries aléatoires sur l'axe des y sur le graphique affiché url. Je suis en train de comprendre ce qu'ils essaient de faire dans le ci-dessous

x = 1/(0.1 + Math.random()); 
y = 2 * Math.random() - 0.5; 
z = 10/(0.1 + Math.random()); 

Comment interpréter ou comprendre mathématiquement/logiquement les opérations ci-dessus dans la méthode des bosses? S'il vous plaît aidez-moi à comprendre la même chose.

+0

Pouvez-vous décrire son effet? Cela aiderait à voir l'idée du code. – Yunnosch

Répondre

2

Je suppose que c'est JAVASCRIPT que je ne l'utilise donc je peux me tromper, mais:

Math.random(); 

intervalle doit retourner la valeur pseudo-aléatoire dans <0,1> si:

x = 1/(0.1 + Math.random()); 
x = 1/(0.1 + <0,1>); 
x = 1/<0.1,1.1>; 
x = <0.909,10.0>; 

y = 2 * Math.random() - 0.5; 
y = 2 * <0,1> - 0.5; 
y = <0,2> - 0.5; 
y = <-0.5,+1.5>; 

z = 10/(0.1 + Math.random()); 
z = 10/(0.1 + <0,1>); 
z = 10/<0.1,1.1>; 
z = <9.09,100>; 

Ainsi, le code juste générer des variables pseudo-aléatoires dans des intervalles spécifiques

x = <+0.909,+ 10.0>; 
y = <-0.500,+ 1.5>; 
z = <+9.090,+100.0>;