#JavaScript (E6) + Html 173 176 193
JavaScript (E6) + Html 173 176 193
Edit: big cut, thanks to William Barbosa
Edit: 3 bytes less, thanks to DocMax
173 bytes counting the function and the canvas element needed to show the output.
Test save as html file and open in FireFox.
<canvas id=C>
<script>
F=(n,x,y,r,p)=>{
for(t=C.getContext("2d"),C.width=C.height=600;n--;x-=(x-p[i])*r,y-=(y-p[i+1])*r)
i=Math.random(t.fillRect(x,y,1,1))*p.length&~1
}
F(100000, 300, 300, 0.66, [100,500, 500,100, 500,500, 100,100, 300,150, 150,300, 300,450, 450,300]) // Function call, not counted
</script>