# a method that returns equal chance of head or tail

Discussion in 'Java' started by strutsng@gmail.com, Oct 7, 2005.

1. ### Guest

I need to write a flip method that returns equal chance of head or
tail. Do you think a test for x % 2 is "equal chance"? Well, random
number generator never gets result "equal chance." Is that correct?

public String flip()
{ Random r = new Random();
int x = r.nextInt();
if (x % 2 == 0)
return "H";
}
numTails++;
return "T";
}

Thanks!!

, Oct 7, 2005

2. ### E11Guest

Depends on how precisely "equal chance" you want. If you want truly
absolutely equal chance (i.e. out of 1,000,000 invocations, you get
exactly 500,000 heads and 500,000 tails), then you can do this:

int i = 0;
public String flip()
{
i++;
if ((i % 2) == 0)
{
return "H";
}
else
{
numTails++;
return "T";
}
}

Otherwise, your method using the RNG should do fine. BTW, its better to
use the same instance of Random throughout, i.e.:

Random r = new Random();
public String flip()
{
int x = r.nextInt();

if (x % 2 == 0)
{
return "H";
}

numTails++;
return "T";
}

Regards,
Edwin

E11, Oct 7, 2005

3. ### Roedy GreenGuest

On 6 Oct 2005 21:45:15 -0700, wrote or quoted :

>I need to write a flip method that returns equal chance of head or
>tail. Do you think a test for x % 2 is "equal chance"? Well, random
>number generator never gets result "equal chance." Is that correct?

see http://mindprod.com/jgloss/gotchas.html#RANDOM
--
http://mindprod.com Again taking new Java programming contracts.

Roedy Green, Oct 7, 2005
4. ### Jussi PiitulainenGuest

writes:

> I need to write a flip method that returns equal chance of head or
> tail. Do you think a test for x % 2 is "equal chance"? Well, random
> number generator never gets result "equal chance." Is that correct?
>
>
> public String flip()
> { Random r = new Random();
> int x = r.nextInt();
> if (x % 2 == 0)

nextBoolean() method. As the other guy said, move the generator out of
the method; only initialize it once. Now you are really just sampling
the current time, which is not a random generator at all.

Jussi Piitulainen, Oct 7, 2005
5. ### GoogmeisterGuest

wrote:
> I need to write a flip method that returns equal chance of head or
> tail.

Use Random.nextBoolean or (Math.random() < 0.5).

Googmeister, Oct 8, 2005
6. ### Roedy GreenGuest

On 8 Oct 2005 03:16:50 -0700, "Googmeister" <>
wrote or quoted :

>Use Random.nextBoolean or (Math.random() < 0.5).

Stick with nextBoolean unless you are using an early JVM that does
not support it. Beware: there are other ways of doing it that give
biased results.
.. See http://mindprod.com/jgloss/gotchas.html#RANDOM
--