Geogebra Bino Stat: Binomial and Hypergeometric Distribution Demo

Geogebra Bino Stat: Binomial and Hypergeometric Distribution Demo
Loading the math board and drawing, please wait…
2012-10-23 20:46
Geogebra Bino Stat demonstrates the process of sampling under binomial and hypergeometric distributions using an animated ball‑dropping experiment that records successes and failures. The core mathematics includes probability theory, hypergeometric distribution, combinatorics, binomial coefficients, and geometric properties such as perimeter and ellipse parameters. The construction leverages GeoGebra commands like Element, Sequence, If, Take, Frequency, Mod, Sum, Circle, Histogram, Segment, and Vector, together with objects such as SuccessDenoms, ProbabilitySuccess, and matrix to generate dynamic simulations and visual histograms. This example is suitable for high‑school and early university students in probability and statistics courses, experimental labs, and data‑visualization activities.

GeoGebra Commands & Parameters

  1. Element(SuccessDenoms, ProbabilitySuccess) → ProbSuccessFailDenom
  2. Element(SuccessNums, ProbabilitySuccess) → ProbSuccessNum
  3. Sequence(100 * Mod[i - 1, Trials] + Trials * Div[i - 1, Trials] + 1, i, 1, Trials * 100) → SumStarts
  4. Sequence(m, m, S_x - Trials / 2 - 0.5, S_x + Trials / 2 + 0.5) → ClassBoundaries
  5. Sequence(S_x - Sum[Take[OneHundredDrops, Element[SumStarts, m], Element[SumStarts, m] + Trials - 1]], m, 1, 100) → SumsInOrder
  6. If(Animate100 < Trials - 0.25, 0, Animate100 - Trials) → FinishedCount
  7. Take(SumsInOrder, 1, FinishedCount) → Results
  8. Frequency(ClassBoundaries, Results) → Outcomes
  9. If(floor(Animate100) ≟ Animate100, 0, 0.03) → BounceFactor
  10. Mod(Animate100 - 1, Trials) → Ball_1Vert
  11. Sum(Take[OneHundredDrops, Div[Animate100 - 1, Trials] * Trials + 1, Animate100]) → Ball_1Count
  12. If(BallDrop ≟ 0, 0, Sum[Take[OneHundredDrops, Element[SumStarts, WhichBallOf100], Element[SumStarts, WhichBallOf100] + BallDrop - 1]]) → PickOneBallCount
  13. Sequence(Sequence[(S_x + i - 0.5 * j, S_y - j), i, 0, j], j, 1, Trials + 1) → matrix
  14. Circle(PickOneBallPt, 0.4) → PickOneBall
  15. Circle(PickOneBallPt, 0.4) → c_2
  16. Sum(Outcomes) → TotalOutcomes
  17. Circle(Ball_1, 0.4) → Ping_1
  18. Sum(Take[OneHundredDrops, Ball_2Start, Ball_2End]) → Ball_2Count
  19. Mod(Ball_1Vert - 1, Trials) → Ball_2Vert
  20. Circle(Ball_2, 0.4) → Ping_2
  21. Mod(Ball_1Vert - 2, Trials) → Ball_3Vert
  22. Sum(Take[OneHundredDrops, Ball_3Start, Ball_3End]) → Ball_3Count
  23. Circle(Ball_3, 0.4) → Ping_3
  24. Take(OneHundredDrops, 201, 300) → Check
  25. Sum(Take[OneHundredDrops, Ball_4Start, Ball_4End]) → Ball_4Count
  26. Mod(Ball_1Vert - 3, Trials) → Ball_4Vert
  27. Circle(Ball_4, 0.4) → Ping_4
  28. Sum(Take[OneHundredDrops, Ball_5Start, Ball_5End]) → Ball_5Count
  29. Mod(Ball_1Vert - 4, Trials) → Ball_5Vert
  30. Circle(Ball_5, 0.4) → Ping_5
  31. Mod(Ball_1Vert - 5, Trials) → Ball_6Vert
  32. Sum(Take[OneHundredDrops, Ball_6Start, Ball_6End]) → Ball_6Count
  33. Circle(Ball_6, 0.4) → Ping_6
  34. Mod(Ball_1Vert - 6, Trials) → Ball_7Vert
  35. Sum(Take[OneHundredDrops, Ball_7Start, Ball_7End]) → Ball_7Count
  36. Circle(Ball_7, 0.4) → Ping_7
  37. Mod(2.5, 1) → Try3
  38. Circle((S_x, S_y - 1 - Mod[Animate100, 1]), 0.4) → Ping_1Start
  39. Circle((S_x, S_y - 1 - Mod[Animate100, 1]), 0.4) → Ping_3Start
  40. Circle((S_x, S_y - 1 - Mod[Animate100, 1]), 0.4) → Ping_2Start
  41. Circle((S_x, S_y - 1 - Mod[Animate100, 1]), 0.4) → Ping_4Start
  42. Circle((S_x, S_y - 1 - Mod[Animate100, 1]), 0.4) → Ping_5Start
  43. Circle((S_x, S_y - 1 - Mod[Animate100, 1]), 0.4) → Ping_6Start
  44. Sequence(Segment[(Element[ClassBoundaries, i], 0), (Element[ClassBoundaries, i], S_y - Trials - 1.5)], i, 1, Trials + 2) → Slots
  45. Element(Outcomes, IndexOf[floor(Element[SumsInOrder, Animate100 - Trials]), CeilClassBounds]) → Vector_y
  46. Element(SumsInOrder, Animate100 - Trials) → Vector_x
  47. Circle((S_x, S_y - 1 - Mod[Animate100, 1]), 0.4) → Ping_7Start
  48. Element(Outcomes, IndexOf[ceil(Element[SumsInOrder, ceil(Animate100 - Trials)]), ceil(ClassBoundaries)]) → V_y1
  49. Sum(Take[OneHundredDrops, Ball_8Start, Ball_8End]) → Ball_8Count
  50. Mod(Ball_1Vert - 7, Trials) → Ball_8Vert
  51. Circle(Ball_8, 0.4) → Ping_8
  52. Circle((S_x, S_y - 1 - Mod[Animate100, 1]), 0.4) → Ping_8Start
  53. Mod(Ball_1Vert - 8, Trials) → Ball_9Vert
  54. Sum(Take[OneHundredDrops, Ball_9Start, Ball_9End]) → Ball_9Count
  55. Circle(Ball_9, 0.4) → Ping_9
  56. Circle((S_x, S_y - 1 - Mod[Animate100, 1]), 0.4) → Ping_9Start
  57. Mod(Ball_1Vert - 9, Trials) → Ball_0Vert
  58. Sum(Take[OneHundredDrops, Ball_0Start, Ball_0End]) → Ball_0Count
  59. Circle(Ball_0, 0.4) → Ping_0
  60. Circle((S_x, S_y - 1 - Mod[Animate100, 1]), 0.4) → Ping_0Start
  61. Element(FailNums, ProbabilitySuccess) → ProbFailNum
  62. Sequence(Sequence[(S_x + i - 0.5 * j, S_y - j), i, 0, j], j, 1, Trials + 1) → matrix2
  63. Sequence(Segment[(Element[ClassBoundaries, i], 0), (Element[ClassBoundaries, i], -0.25)], i, 1, Trials + 2) → Histoxtics
  64. Sequence(Text[LaTeX[i - 1], (Element[ClassBoundaries, i] - 0.1, -0.7)], i, 1, Trials + 2) → list1
  65. Sequence(Trials / 2 - Sum[Take[OneHundredDrops, Element[SumStarts, m], Element[SumStarts, m] + Trials - 1]], m, 1, 100) → SumsAsOutcomes
  66. Element(SumStarts, B) → TraceStart
  67. Sum(Take[OneHundredDrops, 1, 1 + TraceStart]) → Trace_A
  68. Histogram(false, ClassBoundaries, Results, true, 0.2) → GrowHisto
  69. If(Mod[Animate100, 1] ≟ 0.5 ∨ Mod[Animate100, 1] ≟ 0.5, Vector[(Vector_x, S_y - Trials - 2), (Vector_x, (Vector_y * 0.2 + S_y - Trials - 2) / 2)]) → u_2
  70. Sequence(i, i, 0, Trials) → AllOutcomes
  71. Element(Frequency[AllOutcomes, Take[SumsAsOutcomes, 1, B]], NumberOfSuccesses + 1) → B3
  72. If(TraceShow ∧ (¬TracesHide), Sequence[Segment[(S_x - 0.4 + 0.8 / B2 * B3 - Sum[Take[OneHundredDrops, TraceStart, TraceStart + i]], S_y - i - 2), (S_x - 0.4 + 0.8 / B2 * B3 - Sum[Take[OneHundredDrops, TraceStart, TraceStart + i + 1]], S_y - i - 3)], i, 0, Trials - 2]) → Trace
  73. If(TraceShow ∧ (¬TracesHide), Segment[(S_x, S_y - 1), (S_x - 0.4 + 0.8 / B2 * B3 - Sum[Take[OneHundredDrops, TraceStart, TraceStart]], S_y - 2)]) → Trace2
  74. Sequence(Segment[(Element[ClassBoundaries, 1] - 0.3, i * 0.2), (Element[ClassBoundaries, 1], i * 0.2)], i, 0, maxverticalscale, 5) → verticaltics
  75. Segment((Element[ClassBoundaries, 1], 0), (Element[ClassBoundaries, 1], (maxverticalscale + 2) * 0.2)) → yaxis
  76. Sequence(Text[LaTeX[Element[Outcomes, i]], (Element[ClassBoundaries, i] + 0.3, Element[Outcomes, i] * 0.2 + 0.1)], i, 1, Trials + 1) → LabelHistoOutcomes
  77. Sequence(Text[LaTeX[i], (Element[ClassBoundaries, 1] - 0.9, i * 0.2 - 0.1)], i, 0, maxverticalscale, 5) → VerticalScale
  78. If(Mod[Animate100, 1] ≟ 0.75 ∨ Mod[Animate100, 1] ≟ 0.75, Vector[(Vector_x, (S_y - Trials - 2 + Vector_y * 0.2) / 2.05), (Vector_x, Vector_y * 0.23)]) → u_1
  79. Vector(ExPoint, ExPoint2) → u
  80. Segment(ExPoint3, ExPoint) → a

AI Drawing Prompt Reference

Demonstrate an animated ball-dropping experiment simulating binomial and hypergeometric distributions, recording successes and failures. Use a histogram to show the frequency distribution of sampling results, and represent the positions of successfully dropped balls with colored circles in each trial, dynamically illustrating probability theory, combinatorics, and geometric properties.
The prompt above was compiled from the original drawing commands and is for reference only.