่ฆ‹ๅ‡บใ—็”ปๅƒ

๐ŸŽฒใƒ“ใƒฅใƒ•ใ‚ฉใƒณใฎ้‡ใ‚’p5.jsใงๅ†็พใงใใพใ›ใ‚“ใ‹๏ผŸ

ใƒ“ใƒฅใƒ•ใ‚ฉใƒณใฎ้‡ๅ•้กŒใฏ็ขบ็Ž‡่ซ–ใฎๆœ‰ๅใชๅ•้กŒใงใ€้•ทใ•ใฎ้‡ใ‚’ๅบŠใซๆใ‹ใ‚ŒใŸๅนณ่กŒ็ทšใฎ้–“ใซ็„กไฝœ็‚บใซๆŠ•ใ’ใŸใจใใซใ€้‡ใŒ็ทšใ‚’ๆจชๅˆ‡ใ‚‹็ขบ็Ž‡ใ‚’่จˆ็ฎ—ใ™ใ‚‹ใ“ใจใซใ‚ˆใ‚Šใ€ๅ††ๅ‘จ็Ž‡(ฯ€)ใฎ่ฟ‘ไผผๅ€คใ‚’ๆฑ‚ใ‚ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚

ใ“ใฎๅ•้กŒใ‚’p5.jsใงๅ†็พใ™ใ‚‹ใซใฏใ€ไปฅไธ‹ใฎใ‚นใƒ†ใƒƒใƒ—ใ‚’ๅฎŸ่ฃ…ใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™๏ผš

  1. ๅนณ่กŒ็ทšใ‚’ๆ็”ปใ™ใ‚‹: ๅบŠใซๆใ‹ใ‚ŒใŸๅนณ่กŒ็ทšใ‚’ๆ็”ปใ—ใพใ™ใ€‚ใ“ใ‚Œใ‚‰ใฎ็ทšใฏ็ญ‰้–“้š”ใงใ‚ใ‚Šใ€้–“้š”ใฏ้‡ใฎ้•ทใ•ใจๅŒใ˜ใ‹ใ€ใใ‚ŒไปฅไธŠใงใ‚ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚

  2. ้‡ใ‚’ใƒฉใƒณใƒ€ใƒ ใซๆŠ•ใ’ใ‚‹: ้‡ใ‚’ใƒฉใƒณใƒ€ใƒ ใซ็”Ÿๆˆใ—ใ€ใใฎไฝ็ฝฎ๏ผˆไธญๅฟƒใฎx,yๅบงๆจ™๏ผ‰ใจ่ง’ๅบฆใ‚’ใƒฉใƒณใƒ€ใƒ ใซ่จญๅฎšใ—ใพใ™ใ€‚

  3. ้‡ใŒ็ทšใ‚’ๆจชๅˆ‡ใ‚‹ใ‹ๅˆคๅฎšใ™ใ‚‹: ้‡ใŒใฉใฎๅนณ่กŒ็ทšใ‚‚ๆจชๅˆ‡ใฃใฆใ„ใ‚‹ใ‹ใฉใ†ใ‹ใ‚’ๅˆคๅฎšใ—ใพใ™ใ€‚

  4. ฯ€ใฎ่ฟ‘ไผผๅ€คใ‚’่จˆ็ฎ—ใ™ใ‚‹: ้‡ใŒ็ทšใ‚’ๆจชๅˆ‡ใ‚‹็ขบ็Ž‡ใ‚’็”จใ„ใฆใ€ฯ€ใฎ่ฟ‘ไผผๅ€คใ‚’่จˆ็ฎ—ใ—ใพใ™ใ€‚ใƒ“ใƒฅใƒ•ใ‚ฉใƒณใฎ้‡ๅ•้กŒใฎ็†่ซ–ใซใ‚ˆใ‚‹ใจใ€ใ“ใฎ็ขบ็Ž‡ใฏ2L/(ฯ€T)ใงไธŽใˆใ‚‰ใ‚Œใพใ™๏ผˆLใฏ้‡ใฎ้•ทใ•ใ€Tใฏ็ทšใฎ้–“้š”๏ผ‰ใ€‚

ใ“ใ‚Œใ‚’ๅฎŸ่ฃ…ใ™ใ‚‹ใŸใ‚ใฎๅŸบๆœฌ็š„ใชp5.jsใฎใ‚ณใƒผใƒ‰ใ‚นใ‚ฑใƒƒใƒใ‚’ๆ›ธใ„ใฆใฟใพใ—ใ‚‡ใ†ใ€‚

ไปฅไธ‹ใฎใ‚ณใƒผใƒ‰ใฏp5.jsใ‚’ไฝฟ็”จใ—ใฆใƒ“ใƒฅใƒ•ใ‚ฉใƒณใฎ้‡ๅ•้กŒใ‚’ใ‚ทใƒŸใƒฅใƒฌใƒผใ‚ทใƒงใƒณใ™ใ‚‹ใŸใ‚ใฎใ‚‚ใฎใงใ™ใ€‚ใ“ใฎใ‚ทใƒŸใƒฅใƒฌใƒผใ‚ทใƒงใƒณใงใฏใ€็”ป้ขไธŠใซ็ญ‰้–“้š”ใฎๅนณ่กŒ็ทšใ‚’ๆใใ€ใƒฉใƒณใƒ€ใƒ ใซ้‡ใ‚’ๆŠ•ใ’ใฆใ€ใใ‚ŒใŒ็ทšใ‚’ๆจชๅˆ‡ใ‚‹ใ‹ใฉใ†ใ‹ใ‚’ๅˆคๅฎšใ—ใพใ™ใ€‚ใ‚ทใƒŸใƒฅใƒฌใƒผใ‚ทใƒงใƒณใ‚’้€šใ˜ใฆใ€ฯ€ใฎ่ฟ‘ไผผๅ€คใ‚’่จˆ็ฎ—ใ—ใพใ™ใ€‚

// Buffon's Needle simulation parameters
let needleLength = 100;
let lineSpacing = 100;
let count = 0; // Count of needles crossing a line
let total = 0; // Total needles thrown

function setup() {
  createCanvas(400, 400);
  background(255);
  drawLines();
}

function drawLines() {
  for (let i = 0; i < width; i += lineSpacing) {
    stroke(0);
    line(i, 0, i, height);
  }
}

function throwNeedle() {
  // Needle center
  let x = random(width);
  let y = random(height);
  
  // Needle angle
  let angle = random(TWO_PI);
  
  // Needle endpoints
  let x1 = x + (needleLength / 2) * cos(angle);
  let y1 = y + (needleLength / 2) * sin(angle);
  let x2 = x - (needleLength / 2) * cos(angle);
  let y2 = y - (needleLength / 2) * sin(angle);
  
  // Check if needle crosses a line
  let crossesLine = false;
  for (let i = 0; i < width; i += lineSpacing) {
    if ((x1 < i && x2 > i) || (x1 > i && x2 < i)) {
      crossesLine = true;
      break;
    }
  }
  
  // Draw needle
  if (crossesLine) {
    stroke(255, 0, 0); // Red if crossing a line
    count++;
  } else {
    stroke(0, 0, 255); // Blue if not
  }
  line(x1, y1, x2, y2);
  
  // Update total needles thrown
  total++;
}

function draw() {
  if (total < 1000) { // Change this number for more or fewer needles
    throwNeedle();
  } else {
    noLoop(); // Stop drawing once we reach the total
    let probability = count / total;
    let piEstimate = (2 * needleLength) / (probability * lineSpacing);
    console.log('Pi Estimate:', piEstimate);
  }
}

function mouseClicked() {
  total = 0; // Reset total needles thrown
  count = 0; // Reset count of needles crossing a line
  clear();
  background(255);
  drawLines();
  loop();
}



ใƒ“ใƒฅใƒ•ใ‚ฉใƒณใฎ้‡ใจใฏใ€็ขบ็Ž‡่ซ–ใŠใ‚ˆใณ็ตฑ่จˆๅญฆใซใŠใ‘ใ‚‹ๆœ‰ๅใชๅ•้กŒใงใ€ใƒ•ใƒฉใƒณใ‚นใฎ่‡ช็„ถ็ง‘ๅญฆ่€…ใ‚ธใƒงใƒซใ‚ธใƒฅ๏ผใƒซใ‚คใƒปใƒซใ‚ฏใƒฌใƒผใƒซใƒปใƒ‰ใƒปใƒ“ใƒฅใƒ•ใ‚ฉใƒณใซใกใชใ‚“ใงๅไป˜ใ‘ใ‚‰ใ‚Œใพใ—ใŸใ€‚ใ“ใฎๅ•้กŒใฏใ€ๆ•ฐๅญฆ็š„ใช็ขบ็Ž‡ใ‚’็”จใ„ใฆๅ††ๅ‘จ็Ž‡ใฎ่ฟ‘ไผผๅ€คใ‚’ๆฑ‚ใ‚ใ‚‹ๆ–นๆณ•ใฎไธ€ใคใงใ™ใ€‚
ใƒฉใƒƒใƒ—ใฎใ‚นใ‚ฟใ‚คใƒซใง่ชฌๆ˜Žใ™ใ‚‹ใชใ‚‰ใ€ใ“ใ‚“ใชๆ„Ÿใ˜ใซใชใ‚Šใพใ™๏ผš


Yoใ€่žใ„ใฆใใ‚Œใ€ใ“ใฎใƒ“ใƒฅใƒ•ใ‚ฉใƒณใฎ้‡ใฎ่ฉฑใ€ ๆ•ฐๅญฆใฎใƒˆใƒชใƒƒใ‚ฏใ€ใกใ‚‡ใฃใจใ—ใŸ้ญ”ๆณ•ใฟใŸใ„ใชใ‚‚ใ‚“ใ ใ€ใ•ใใ€‚
ๅนณ้ขไธŠใซ็›ด็ทšใ‚’ๅผ•ใ„ใฆใ€้–“้š”ไธ€ๅฎšใงใ€ ้‡ใ‚’่ฝใจใ™ใ‚ฒใƒผใƒ ใ€ๅง‹ใ‚ใ‚ˆใ†ใ˜ใ‚ƒใชใ„ใ‹ใ€‚
้‡ใฎ้•ทใ•ใ€็›ด็ทšใฎ้–“้š”ใ€ใ“ใ‚ŒใŒใ‚ญใƒผใ€ ็ขบ็Ž‡ใ‚’ไฝฟใฃใฆใ€ๅ††ๅ‘จ็Ž‡ใ‚’่ฆ‹ใคใ‘ๅ‡บใ™ใ‚“ใ ใ€‚
้‡ใŒ็ทšใ‚’่ถŠใˆใ‚‹็ขบ็Ž‡ใ€ใใ‚Œใ‚’่จˆ็ฎ—ใ—ใฆใ€ 2ๅ€ใ—ใฆ้‡ใฎ้•ทใ•ใ‚’ๅ‰ฒใ‚Šใ€็›ด็ทšใฎ้–“้š”ใงๆŽ›ใ‘ใ‚‹ใ‚“ใ ใ€‚
ไฝ•ๅบฆใ‚‚่ฉฆใ›ใฐ่ฉฆใ™ใปใฉใ€็œŸๅฎŸใซ่ฟ‘ใฅใใ€ ๅ††ๅ‘จ็Ž‡ฯ€ใ€3.14... ใใ‚ŒใŒ่ฆ‹ใˆใฆใใ‚‹ใ€‚
ใƒ“ใƒฅใƒ•ใ‚ฉใƒณใฎ้‡ใ€ใŸใ ใฎ้Šใณใ˜ใ‚ƒใชใ„ใ€ ๆ•ฐๅญฆใฎ็พŽใ—ใ•ใ€่‡ช็„ถใฎๆณ•ๅ‰‡ใ‚’่ฆ‹ใ›ใฆใใ‚Œใ‚‹ใ‚“ใ ใ€‚
ๆ•ฐๅญฆ่€…ใฎๅคขใ€็ง‘ๅญฆ่€…ใฎใƒญใƒžใƒณใ€ ็ขบ็Ž‡ใจ็ตฑ่จˆใงใ€ๅฎ‡ๅฎ™ใฎ็œŸ็†ใซไธ€ๆญฉ่ฟ‘ใฅใใ€‚

ใŠ้ก˜ใ„่‡ดใ—ใพใ™