O'Reilly logo

Actionscript Cookbook by Joey Lott

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

5.8. Simulating a Coin Flip

Problem

You want to simulate a coin flipping or other Boolean (true/false) event in which there is a 50% chance of either outcome.

Solution

Use the randRange( ) method to generate an integer that is either 0 or 1 and then correlate each possible answer with one of the desired results.

Discussion

You can use the randRange( ) method from Recipe 5.7 to generate a random integer in the specified range. To relate this result to an event that has two possible states, such as a coin flip (heads or tails) or a Boolean condition (true or false), treat each random integer as representing one of the possible states. By convention, programmers use 0 to represent one state (such as “off”) and 1 to represent the opposite state (such as “on”), although you can use 1 and 2 if you prefer.

For example, here is how you could simulate a coin flip:

#include "Math.as"

function coinFlip (  ) {
  flip = Math.randRange(0, 1);
  if (flip == 0) {
    return "heads";
  } else {
    return "tails";
  }
}

// Example usage:
trace ("The result of the coin flip was " + coinFlip(  ));

Here, we write a function that tests our coinFlip( ) routine to see if it is reasonably even-handed. Do you expect a perfect 50/50 distribution regardless of the number of coin flips? Test it and see.

#include "Math.as"

function testCoinFlip (numFlips) {
  // We'll count how many of each result occurs. Initialize them to 0.
  var heads = 0;
  var tails = 0;

  // Repeat the process numFlips times and keep tabs on the results. for (var ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required