這是我從閱讀你鏈接的博客中想出來的。據我所知,這是作者爲他的第一張圖做的。
CSS
#container {
min-width: 310px;
height: 400px;
margin: 0 auto;
}
HTML
<div id="container"></div>
的Javascript
Box–Muller transform
產生Gaussian Random Numbers
var boxMullerRandom = (function() {
var phase = 0,
RAND_MAX,
array,
random,
x1, x2, w, z;
if (crypto && typeof crypto.getRandomValues === 'function') {
RAND_MAX = Math.pow(2, 32) - 1;
array = new Uint32Array(1);
random = function() {
crypto.getRandomValues(array);
return array[0]/RAND_MAX;
};
} else {
random = Math.random;
}
return function() {
if (!phase) {
do {
x1 = 2.0 * random() - 1.0;
x2 = 2.0 * random() - 1.0;
w = x1 * x1 + x2 * x2;
} while (w >= 1.0);
w = Math.sqrt((-2.0 * Math.log(w))/w);
z = x1 * w;
} else {
z = x2 * w;
}
phase ^= 1;
return z;
}
}());
Random Walk
發電機
function randomWalk(steps, randFunc) {
steps = steps >>> 0 || 100;
if (typeof randFunc !== 'function') {
randFunc = boxMullerRandom;
}
var points = [],
value = 0,
t;
for (t = 0; t < steps; t += 1) {
value += randFunc();
points.push([t, value]);
}
return points;
}
助手功能,以從隨機遊走得到Y值點
function getYValues(points) {
return points.map(function (point) {
return point[1];
});
}
Helper功能,將產生X曲線的圖形
function generatePlots(howMany) {
howMany = howMany >>> 0 || 10;
var plots = [],
index;
for (index = 0; index < howMany; index += 1) {
plots.push({
name: 'plot' + index,
data: getYValues(randomWalk())
});
}
return plots;
}
圖的結果,使用jQuery
和highcharts.js
$('#container').highcharts({
title: {
text: 'Random Walk',
x: -20 //center
},
subtitle: {
text: 'Random Walk',
x: -20
},
xAxis: {
type: 'linear'
},
yAxis: {
title: {
text: 'Value'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
valueSuffix: ' units'
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 0
},
series: generatePlots(10)
});
在jsFiddle
這裏的第一個相關的搜索查詢我能想到的(athough有可能是其他人):https://www.google.com /#q =平滑+隨機+步行+算法 –
[這是你在找什麼?](http://jsfiddle.net/Xotic750/3rfT6/)這是最好的,我可以看看鏈接您發佈的博客。這是博客上的第一張圖,10個100步的圖。 – Xotic750
@ Xotic750聖潔的廢話;這工作相當好!你能解釋一下它是如何工作的,所以我可以修改它,如果需要的話?例如,我怎樣才能讓它傳播更多,或者我怎樣才能限制它的價值? –