MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: How to simulate random samples from crooked coin toss?

Hi, Dan,

    Here's my solution. There are probably much more elegant ways to do
it, but this is quick:

    Get your probabilities (for the crooked coin, or die, or whatever)
in the range [0, 1] for each side. That is, if the die has 6 sides, you
could say

    probsOfEachSide={0.4, 0.15, 0.3, 0.1, 0.025, 0.025}

so that "side 1" has a 40% chance of coming up, "side 2" has a 15%
chance, etc.

    numberOfSide = probsOfEachSide//Length

 Note that probsOfEachSide//Total = 1.

Create a list of cutoffs -- read the documentation about RangeCounts and


    cutoffs[[1]] = probsOfEachSide//First;

    (AppendTo[cutoffs, probsOfEachSide[[#]] + cutoffs[[# - 1]]]) & /@ (Range[2, numberOfSides - 1]);


Here, we toss a coin 10000 (or however many you want) times:

    rawTosses = Random[] & /@ Range[10000];

If you want to see explicitly which tosses fall into which bins (between
0 and 0.4, or between 0.4 and 0.4+0.15, etc.) then you can use

    RangeLists[rawTosses, cutoffs]

but I suspect that you want to use

    numberInEachBin=RangeCounts[rawTosses, cutoffs]

which will actually count the number of tosses which fall into each bin.

    ListPlot[numberInEachBin, PlotJoined -> True]

Alternatively, Histogram looks nice:


    Histogram[numberInEachBin, FrequencyData -> True];


              Hope that helps,

DAN BIKLE wrote:

>Math People,
>I'm new to Mathematica so please bear with me.
>I have a simple problem I want to solve and I'm looking
>for some ideas to get started on it.
>I want to simulate 100 tosses of a crooked coin where
>probability of Heads is 0.6 and Tails is 0.4.
>After I figure the coin out, I want to move on to crooked
>dice and crooked card decks.
>So, really what I'm looking for has more to do with developing
>a method to simulate the collection of random samples.
>I looked around in Help and found a promising sentence:
>"Random[distribution] gives a random number with the specified
>statistical distribution."
>Then I found a page here which has some clues:
>Unfortunately, I'm weak with math notation so the above
>page makes little sense to me.
>So, let me put it to you as simply as I can:
>I want to define a function that could be called like this:
>numberOfHeads = coinTosser[infoAboutCoin, numberOfTosses, head]
>numberOfTails = coinTosser[infoAboutCoin, numberOfTosses, tail]
>Once I figure out how to write the above function,
>I could template off of it to build something like this:
>numberOfOnes = diceRoller[infoAboutThisDie, numberOfRolls, aOne]
>Do any of you have thoughts on how to approach the
>writing of the above functions?

PGP Key ID: 0x235FDED1
Please avoid sending me Word or PowerPoint attachments.

  • Prev by Date: Re: How to simulate random samples from crooked coin toss?
  • Next by Date: Re: Function to handle array with variable _number_ of dimensions?
  • Previous by thread: Re: How to simulate random samples from crooked coin toss?
  • Next by thread: Re: How to simulate random samples from crooked coin toss?