Implemented the perlin noise algorithm. It's pretty big, so there wasn't much room left. But i love it so much. Click the canvas to generate a new seed.
M=Math;r=M.random;s=[];n=function(){for(i=12;i--;)s[i]=[r()*3-1,r()*3-1]};n();function z(g,f,k){F=0.5-f*f-k*k;return F<0?0:M.pow(F,4)*(s[g%12][0]*f+s[g%12][1]*k)}u=[];for(i=255;i--;)u[i]=~~(r()*256);function q(g,f){e=0.2;a=(g+f)*0.3;m=~~(g+a);b=~~(f+a);a=(m+b)*e;c=g-(m-a);j=f-(b-a);C=c>j;return 70*(z(u[m+u[b]],c,j)+z(u[m+C+u[b+!C]],c-C+e,j-!C+e)+z(u[m+1+u[b+1]],c-0.6,j-0.6))}c=document.body.children[0];c.width=w=innerWidth;c.height=h=innerHeight;document.body.style.overflow="hidden";x=[];for(i=w;i--;)x[i]={x:r()*w,y:r()*h};d=c.getContext("2d");setInterval(function(){d.fillStyle="rgba(255,255,255,.05)";d.fillRect(0,0,w,h);d.fillStyle="#000";for(i=w;i--;){X=x[i];a=q(X.x/300,X.y/300)*9;X.x+=M.cos(a);X.y+=M.sin(a);if(X.x<0||X.x>w||X.y<0||X.y>h){X.x=r()*w;X.y=r()*h}d.fillRect(X.x,X.y,1,1)}},33);c.onclick=function(){n()};
TT1NYXRoO3I9TS5yYW5kb207cz1bXTtuPWZ1bmN0aW9uKCl7Zm9yKGk9MTI7aS0tOylzW2ldPVtyKCkqMy0xLHIoKSozLTFdfTtuKCk7ZnVuY3Rpb24geihnLGYsayl7Rj0wLjUtZipmLWsqaztyZXR1cm4gRjwwPzA6TS5wb3coRiw0KSooc1tnJTEyXVswXSpmK3NbZyUxMl1bMV0qayl9dT1bXTtmb3IoaT0yNTU7aS0tOyl1W2ldPX5+KHIoKSoyNTYpO2Z1bmN0aW9uIHEoZyxmKXtlPTAuMjthPShnK2YpKjAuMzttPX5+KGcrYSk7Yj1+fihmK2EpO2E9KG0rYikqZTtjPWctKG0tYSk7aj1mLShiLWEpO0M9Yz5qO3JldHVybiA3MCooeih1W20rdVtiXV0sYyxqKSt6KHVbbStDK3VbYishQ11dLGMtQytlLGotIUMrZSkreih1W20rMSt1W2IrMV1dLGMtMC42LGotMC42KSl9Yz1kb2N1bWVudC5ib2R5LmNoaWxkcmVuWzBdO2Mud2lkdGg9dz1pbm5lcldpZHRoO2MuaGVpZ2h0PWg9aW5uZXJIZWlnaHQ7ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIjt4PVtdO2ZvcihpPXc7aS0tOyl4W2ldPXt4OnIoKSp3LHk6cigpKmh9O2Q9Yy5nZXRDb250ZXh0KCIyZCIpO3NldEludGVydmFsKGZ1bmN0aW9uKCl7ZC5maWxsU3R5bGU9InJnYmEoMjU1LDI1NSwyNTUsLjA1KSI7ZC5maWxsUmVjdCgwLDAsdyxoKTtkLmZpbGxTdHlsZT0iIzAwMCI7Zm9yKGk9dztpLS07KXtYPXhbaV07YT1xKFgueC8zMDAsWC55LzMwMCkqOTtYLngrPU0uY29zKGEpO1gueSs9TS5zaW4oYSk7aWYoWC54PDB8fFgueD53fHxYLnk8MHx8WC55Pmgpe1gueD1yKCkqdztYLnk9cigpKmh9ZC5maWxsUmVjdChYLngsWC55LDEsMSl9fSwzMyk7Yy5vbmNsaWNrPWZ1bmN0aW9uKCl7bigpfTs=
M = Math;
r = M.random;
s = [];
n = function(){
for (i = 12; i--;) {
s[i] = [r()*3-1, r()*3-1]
}
}
n();
function z(k, t, j) {
F = .5 - t * t - j * j;
return (F < 0) ? 0 : M.pow(F, 4) * (s[k%12][0] * t + s[k%12][1] * j)
}
u = [];
for (i = 255; i--;) {
u[i] = ~~(r() * 256)
}
function q(k, t) {
e = .2;
a = (k + t) * .3;
m = ~~(k + a);
b = ~~(t + a);
a = (m + b) * e;
c = k - (m - a);
j = t - (b - a);
C = c > j;
return 70 * (z(u[m + u[b]], c, j) +
z(u[m + C + u[b + !C]], c - C + e, j - !C + e) +
z(u[m + 1 + u[b + 1]], c - .6, j - .6))
};
c = document.body.children[0];
c.width = w = innerWidth;
c.height = h = innerHeight;
document.body.style.overflow = 'hidden';
x = [];
for(i = w; i--;) {
x[i] = {x:r()*w,y:r()*h};
}
d = c.getContext('2d');
setInterval(function() {
d.fillStyle = 'rgba(255,255,255,.05)';
d.fillRect(0,0,w,h);
d.fillStyle = '#000';
for (i = w; i--;){
X = x[i];
a = q(X.x/300, X.y/300)*9;
X.x += M.cos(a);
X.y += M.sin(a);
if (X.x < 0 || X.x > w || X.y < 0 || X.y > h) {
X.x = r()*w;
X.y = r()*h;
}
d.fillRect(X.x, X.y, 1, 1);
}
}, 33);
c.onclick=function(){n()};