# 4 Blocks

### 2 collaborators

Uri Wilensky (Author)
Dor Abrahamson (Author)

### Tags

problab

"It's part of the ProbLab model suite"

Tagged by Uri Wilensky over 13 years ago

Model group CCL | Visible to everyone | Changeable by group members (CCL)
Model was written in NetLogo 5.0.4 • Viewed 722 times • Downloaded 47 times • Run 10 times

## WHAT IS IT?

4-Blocks simulates an empirical probability experiment in which the randomness generator is a compound of 4 squares that each can independently be either green or blue. The model helps us conceptualize relations between theoretical and empirical aspects of the binomial function: combinatorial analysis (what we can get) and experimentation (what we actually get).

This model is a part of the ProbLab curriculum. The ProbLab Curriculum is currently under development at the CCL. For more information about the ProbLab Curriculum please refer to http://ccl.northwestern.edu/curriculum/ProbLab/ and http://edrl.berkeley.edu/design.shtml.

## HOW IT WORKS

The model operates all four squares simultaneously, just like flipping four coins at once. At every Go, each square "flips a coin" to decide whether it should be green or blue at a probability you have set. The number of green squares in the block is counted up and added to a list that is plotted as a histogram. Over many runs, the histogram begins to "take shape." When the 'stratified?' switch is set to 'On,' each of the five columns will be parsed into one, four, six, four, or one sub-groups that record the within-column distribution of the five aggregate events.

## PEDAGOGICAL NOTE

In this probability experiment, there are five possible compound events: no-green, one-green, two-green, three-green, or four-green. These aggregate events (combinations) expand into a total of 16 elemental events (permutations) that collectively comprise the sample space: 1 no-green, 4 one-green, 6 two-green, 4 three-green, and 1 four-green. These values, 1-4-6-4-1, are the n-choose-k coefficients of the binomial function, where n is 4 and 'green' is the favorable event. A histogram tracks the accumulation of these compound outcomes. When the probability of getting green is set at 50%, the emergent empirical distribution will dynamically converge on a 1:4:6:4:1 distribution, and when we offset the p value of 50%, the distribution is accordingly offset.

A "stratification" feature allows us to monitor within-column accumulation corresponding with the 16 unique elemental events. The pedagogical objective of this stratification, which parses the distribution into the 16 chunks of elemental events, is to support learners in teasing out two complementary aspects of the distribution: whereas within-column elemental events all share the same chance, the fact that they are stacked together is an arbitrary decision of the experimenter. For example, we could have, hypothetically, sorted the 16 unique types of experimental outcomes into two groups - those that have a green cell in the bottom left corner and those that do not. In sum, the stratification feature was designed as one step toward demystifying for students the apparent ineluctability of the experiment's convergence on the anticipated distribution.

## HOW TO USE IT

Buttons: SETUP initializes the variables and erases the plot. GO ONCE activates the procedures just once. So you will get a single 4-block in the view and the corresponding column in the histogram will rise by one "notch." GO activates the procedures repeatedly until you press it again.

Sliders: PROBABILITY-TO-BE-TARGET-COLOR sets the chance for each of the independent squares to be green.

Switches: ONE-BY-ONE-CHOICES? Helps users see the 4-Block as a set of four independent randomness generators (like four flipping coins). When On, each square will settle on its color at a different moment. Also, when Go is pressed, there will be a pause between 4-blocks. You'll want to set this switch to Off once the nature of the experiment is clear. STRATIFIED? Makes the histogram columns be partitioned to reflect accumulation by unique elemental event. As more samples are taken, you will see the 1-4-6-4-1 structure emerge; the within-column blocks will equalize, but the between-column blocks will be equal only for a probability of 50%.

## THINGS TO NOTICE

Using the default model settings, press GO ONCE. See how each of the four squares takes time to decide whether it is green or blue. This is like four coins that are spinning on the table until they each settle either on Head or Tail.

## THINGS TO TRY

Run the model with the probability-to-be-target-color set at 50%. As the model runs, the histogram grows. Pretty soon, the central column grows taller than other columns. This demonstrates that there is a higher chance of getting 4-blocks that have exactly two green squares as compared to 4-blocks that have either zero, one, three, or four green squares. But there is more structure to interpret. The lowest chance is to get a 4-block with no green squares or with four green squares. The chance of getting a 4-block with either exactly one green or three green squares is in between.

Now change the value of the probability slider, press Setup, and run again. What do you see?

Set the Stratified? switch to On, the model speed to slow, and the probability value to 50% Run the model. See in the histogram how new blocks pop up. Eventually, the number of blocks in the columns will be 1, 4, 6, 4, and 1, respectively.

## NETLOGO FEATURES

Auto-Plot: Look at the histogram as it grows. What happens when it reaches the top? The simulation is generating more and more samples, but there is no room to count them. Instead of leaping up out of the box, the number at the top-left corner of the plot -- the value of the y-axis - updates, and the histogram is redrawn to fit. Stratification: The partitioning of the histogram columns by unique elemental events was created especially for this model. See the procedures to learn how this was accomplished. Essentially, a nested structure was used to create within each column as many sub-columns as necessary. For example, the one-green columns (second from the left) is comprised of four stacked columns.

## EXTENDING THE MODEL

You may want to monitor different aspects of the probabilistic experiment, to answer such questions as:

• how often do we get the same combinations twice one after the other?
• is there particular permutations you like? You could add code to see how long it takes the model to find this permutation.
• what is the dynamic ratio between the number of one-green and three-green outcomes?

## HOW TO CITE

If you mention this model in a publication, we ask that you include these citations for the model itself and for the NetLogo software:

• Abrahamson, D. and Wilensky, U. (2006). NetLogo 4 Blocks model. http://ccl.northwestern.edu/netlogo/models/4Blocks. Center for Connected Learning and Computer-Based Modeling, Northwestern Institute on Complex Systems, Northwestern University, Evanston, IL.
• Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern Institute on Complex Systems, Northwestern University, Evanston, IL.

## Early Version

I think this is an early version of teh model "1764 Blocks", which happens to be 42^2.

## Posted almost 13 years ago

Click to Run Model

```breed [ frames frame ]
;; frames are black frames around each patch; they help count the colored patches

globals [
target-color other-color ;; colors of patches before and during the runs
target-color-list ;; accumulates values from repeated runs, these are histogrammed
stratified-list
stratified-indices
]

;;;;;;;;;;;;;;;;;;
;;; Setup Procedures
;;;;;;;;;;;;;;;;;;

to setup
initialize
create-the-frames
end

to initialize
clear-all
reset-ticks
set-colors
set target-color-list []
ask patches [ set pcolor white - 1]
set stratified-list n-values 16 [0] ;; counts the frequency of each of the 16 permutations.
;; This list indexes the positions of the 16 permutations in the CT by the bitmask of the four patches.
set stratified-indices (list 0 1 2 5 3 6 7 11 4 8 9 12 10 13 14 15)
end

;; We used color variables and not just colors so that you could change the color values
;; to suit you. For instance, perhaps you would want to change the green to cyan

to set-colors
set target-color green
set other-color blue
end

to create-the-frames ;; each individual patch in the block is framed, creating an overall effect
;; of a grid that helps distinguish individual patches in the block
set-default-shape frames "frame"
sprout 1 [
set breed frames
set color black
]
]
end

;;;;;;;;;;;;;;;;;;
;;; Go Procedures
;;;;;;;;;;;;;;;;;;

to go
if one-by-one-choices? [ask patches [set pcolor white - 1 ] display wait .3]
[
ifelse random-float 100 < probability-to-be-target-color [
set pcolor target-color
;set flag 1
] [
set pcolor other-color
;set flag 0
]

if one-by-one-choices? [ display wait 0.1 ]
]

make-histogram
tick
if one-by-one-choices? [ wait 0.5 ]
end

;;;;;;;;;;;;;;;;;;
;;; Utilities
;;;;;;;;;;;;;;;;;;

to-report choose [n c]
report ((factorial n)/((factorial c) * (factorial (n - c))))
end

to-report factorial [n]
report ifelse-value (n = 0) [
1
] [
n * factorial (n - 1)
]
end

;;;;;;;;;;;;;;;;;;
;;; Plotting
;;;;;;;;;;;;;;;;;;

to make-histogram
set target-color-list fput count patches with [pcolor = target-color] target-color-list
;; i is the bitmask of the patches
let i sum [ 2 ^ ( pxcor + 2 * pycor ) ] of patches with [pcolor = target-color]
set i item i stratified-indices
set stratified-list replace-item i stratified-list (item i stratified-list + 1)

set-current-plot "Distribution by Target Color"

ifelse stratified? [
clear-plot
plotxy 0 0
plotxy 4 0
let range 0 ;; keeps track of the highest column
let col-height 0 ;; keeps track of total height of a given histogram column
let perm-category 0 ;; keeps track of which segment of a given histogram column
;; corresponds to a specific block permutation
foreach [0 1 2 3 4] [ ;; foreach histogram column, which represents the number
;; of blocks that are the target-color
let column ?
set col-height 0 ; since it's a new column, start at the bottom
foreach n-values (choose 4 column) [?] [ ;; foreach possible permutation
;; of blocks in this column, add
;; a piece of the histogram
set col-height col-height + item perm-category stratified-list
plotxy column col-height
set perm-category perm-category + 1
set range max list range col-height
]
]
if range > 9 [set-plot-y-range 0 range + 1]
] [
histogram target-color-list
let maxbar modes target-color-list
let maxrange filter [ ? = item 0 maxbar ] target-color-list
set-plot-y-range 0 length maxrange
]
end

```

There are 10 versions of this model.

Uri Wilensky over 8 years ago Updated to NetLogo 5.0.4 Download this version
Uri Wilensky over 9 years ago Updated to version from NetLogo 5.0.3 distribution Download this version
Uri Wilensky over 11 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky over 11 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky over 11 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky over 11 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky over 11 years ago Model from NetLogo distribution Download this version