complete exercise 0.6
This commit is contained in:
parent
e964c14974
commit
c5c6ec4fee
15
0. Randomness/6. Levy Flight Walker/index.html
Normal file
15
0. Randomness/6. Levy Flight Walker/index.html
Normal file
@ -0,0 +1,15 @@
|
||||
<html>
|
||||
<head>
|
||||
<script src="https://cdn.jsdelivr.net/npm/p5@1.9.0/lib/p5.js"></script>
|
||||
<script src="sketch.js"></script>
|
||||
<style>
|
||||
body {
|
||||
background: #212121;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
55
0. Randomness/6. Levy Flight Walker/sketch.js
Normal file
55
0. Randomness/6. Levy Flight Walker/sketch.js
Normal file
@ -0,0 +1,55 @@
|
||||
// An algorithm for picking a random number based on monte carlo method
|
||||
function acceptreject(formula) {
|
||||
// We do this “forever” until we find a qualifying random value.
|
||||
while (true) {
|
||||
// Pick a random value.
|
||||
let r1 = random(1);
|
||||
// Assign a probability.
|
||||
let probability = formula(r1);
|
||||
// Pick a second random value.
|
||||
let r2 = random(1);
|
||||
|
||||
//{!3} Does it qualify? If so, we’re done!
|
||||
if (r2 < probability) {
|
||||
return r1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Walker {
|
||||
constructor(x = 0, y = 0) {
|
||||
this.x = x
|
||||
this.y = y
|
||||
}
|
||||
|
||||
step() {
|
||||
let step = 1;
|
||||
if (acceptreject(x => x*x) < 0.1) {
|
||||
step = 20;
|
||||
}
|
||||
|
||||
let dx = random(-step, step);
|
||||
let dy = random(-step, step);
|
||||
|
||||
this.x += dx
|
||||
this.y += dy
|
||||
}
|
||||
|
||||
draw() {
|
||||
stroke(0)
|
||||
point(this.x, this.y)
|
||||
}
|
||||
}
|
||||
|
||||
let walker
|
||||
|
||||
function setup() {
|
||||
createCanvas(640, 240)
|
||||
background(255)
|
||||
walker = new Walker(320, 120)
|
||||
}
|
||||
|
||||
function draw() {
|
||||
walker.step();
|
||||
walker.draw();
|
||||
}
|
Loading…
Reference in New Issue
Block a user