Skip to content
This repository has been archived by the owner on Sep 22, 2024. It is now read-only.

updating p5js examples #84

Open
lingtalfi opened this issue Jun 8, 2019 · 0 comments
Open

updating p5js examples #84

lingtalfi opened this issue Jun 8, 2019 · 0 comments
Assignees

Comments

@lingtalfi
Copy link

Hi, I'm following the youtube playlist on nature of code, and I didn't found the corresponding p5.js code for the Custom Distribution video (https://www.youtube.com/watch?v=DfziDXHYoik).

So here is the code I created, based on the processing equivalent:

// An array to keep track of how often random numbers are picked
let randomCounts = [];

function setup() {
    background(200);
    createCanvas(800, 200);
    for (var i = 1; i <= 20; i++) {
        randomCounts.push(0);
    }
}

function draw() {
    background(255);

    // Pick a random number and increase the count
    var index = int(acceptreject() * randomCounts.length);
    randomCounts[index]++;

    // Draw a rectangle to graph results
    stroke(0);
    strokeWeight(2);
    fill(127);

    var w = width / randomCounts.length;

    for (var x = 0; x < randomCounts.length; x++) {
        rect(x * w, height - randomCounts[x], w - 1, randomCounts[x]);
    }
}

// An algorithm for picking a random number based on monte carlo method
// Here probability is determined by formula y = x
function acceptreject() {
    // Have we found one yet
    var foundone = false;
    var hack = 0;  // let's count just so we don't get stuck in an infinite loop by accident
    while (!foundone && hack < 10000) {
        // Pick two random numbers
        var r1 = float(random(1));
        var r2 = float(random(1));
        var y = r1 * r1;  // y = x*x (change for different results)
        // If r2 is valid, we'll use this one
        if (r2 < y) {
            foundone = true;
            return r1;
        }
        hack++;
    }
    // Hack in case we run into a problem (need to improve this)
    return 0;
}

Hopefully you can update your repository and add this code example too.
Cheers.

@shiffman shiffman assigned jasongao97 and shiffman and unassigned jasongao97 Feb 7, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants