How to Create a PHP Random Number Generator for a Coin Toss?

Click For Summary
The discussion centers on creating a random number generator for simulating coin tosses, specifically generating 1s and 2s. The original poster (OP) expects that after a large number of tosses, such as 1,000,000, the results should yield approximately equal counts of 1s and 2s, ideally 500,000 each. However, they observe increasing deviation from this expectation as more numbers are generated. The key issue identified is the misunderstanding of how to measure deviation. It's emphasized that absolute deviation isn't the right metric; instead, relative deviation should be considered to understand the results better. The OP's code includes a form for selecting the number of tosses and uses the `mt_rand` function to generate random numbers. The discussion highlights the importance of statistical principles in random number generation and the inherent variability that comes with it, clarifying that exact equality in results is not guaranteed.
jscix
Messages
2
Reaction score
0
Okay, What I am trying to do is create a create a random number generator, that outputs 1 and 2 (coin toss)

From what I understand, the more coin tosses (the more times I generate a random 1 or 2) the more uniform the pattern should be.

EG: After generating a random 1-2 sequence, 1,000,000 times.. i should have 500,000 (1s) and 500,000 (2s).. am I wrong?

Anyway, I'm not sure what I am doing wrong but the more numbers I generate, the more deviation I am getting.

Here is how I'm doing this.. (I know I probably did this all wrong.. if so someone just tell me lols) Cheesy

thank you in advance


Code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>Coin Toss</title>
</head>
<html xmlns="http://www.w3.org/1999/xhtml">
<?php
$submit = ($_POST['Toss']);
$values = ($_POST['select']);
if (!$submit) {
?>
<body><center>
<p align="center">Coin Toss Deviation
<form method="post" action="Cointoss.php">
<select name="select">
<option value="none">How many coin tosses?</option>
<option value="one">One Hundred</option>
<option value="two">One Thousand</option>
<option value="three">One-Hundred Thousand</option>
</select><input type="submit" name="Toss" value="Toss" />
</form>
</center></body></p>

</html>
<?php
}
else {

switch ($values) {

case "none":
die ("Select number of tosses");
break;
case "one":
$total = "100";
break;
case "two":
$total = "1000";
break;
case "three":
$total = "100000";
break;
}
$dev = 0;
$i = 0;

while ($i < $total) {

$cur = mt_rand(1,2);
//print $i . " = $cur <br>";

if ($cur == "1") {
$dev++;
$one++;
}

if ($cur == "2") {
$dev--;
$two++;
}
$i++;
}
unset ($submit);
print "<center>ones: $one <br>twos: $two<br>";
print "total: " . $dev . " point deviation.<br><br>";

print <<< DUH
Average deviation is 0 points<br>
The more tosses, the lower the deviation should be. (Closer to 0)<br>
DUH;

print "<a href=\"Cointoss.php\">Try Again!</a>";
}
?>
 
Last edited by a moderator:
Technology news on Phys.org
jscix said:
EG: After generating a random 1-2 sequence, 1,000,000 times.. i should have 500,000 (1s) and 500,000 (2s).. am I wrong?
It will never be exact.

The problem in the OP is that one has to check the relative, not absolute, deviation.
 
Learn If you want to write code for Python Machine learning, AI Statistics/data analysis Scientific research Web application servers Some microcontrollers JavaScript/Node JS/TypeScript Web sites Web application servers C# Games (Unity) Consumer applications (Windows) Business applications C++ Games (Unreal Engine) Operating systems, device drivers Microcontrollers/embedded systems Consumer applications (Linux) Some more tips: Do not learn C++ (or any other dialect of C) as a...

Similar threads

  • · Replies 10 ·
Replies
10
Views
2K
  • · Replies 3 ·
Replies
3
Views
9K
  • · Replies 4 ·
Replies
4
Views
6K
Replies
4
Views
2K
  • · Replies 7 ·
Replies
7
Views
3K