*Take a* Chance

Recently (and four years ago when I first wrote the draft for this post in November 2007), I needed a function that had an `x`

in `y`

chance of returning true. Some quick googling turned up nothing (I don’t even know what you would call this). After some trial and error I came up with this:

```
function chance(x, y)
{
// return Math.ceil(Math.random() * y) <= x;
return Math.random() <= x/y;
};
```

Which in my testing behaves as intended. `chance(1, 32);`

has an approximately 3% chance of returning `true`

. `chance(99, 100);`

has an approximately 99% chance of returning `true`

.

Hopefully this will save someone else some unnecessary head-scratching.

**Update** K.M. points out that `Math.random()`

returns a number between 0 (inclusive) and 1 (exclusive) so the `Math.ceil()`

is unnecessary.