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

Click For Summary
SUMMARY

This discussion focuses on creating a PHP random number generator for simulating a coin toss, specifically generating 1s and 2s. The original poster (OP) expected a uniform distribution of results after a large number of tosses but observed deviations. The code provided utilizes the mt_rand() function to generate random numbers, and the OP is advised to check relative deviation rather than absolute deviation to understand the results better. The conclusion emphasizes that exact results are unattainable due to the nature of randomness.

PREREQUISITES
  • Understanding of PHP programming language
  • Familiarity with random number generation concepts
  • Knowledge of statistical deviation and its types
  • Basic HTML form handling in PHP
NEXT STEPS
  • Explore PHP's mt_rand() function and its advantages over rand()
  • Learn about statistical concepts such as relative vs. absolute deviation
  • Investigate more advanced random number generation techniques in PHP
  • Study the Central Limit Theorem and its implications for random sampling
USEFUL FOR

Web developers, data analysts, and anyone interested in understanding randomness and statistical distributions in programming.

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.
 

Similar threads

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