I encountered
Bitcoin Darts and played a total of ten times each for 0.1btc. I came out ahead by 0.41btc. So I decided to investigate further the odds of winning.
I analyzed the PNG image and noticed a bit of antialiasing and also a bit of green bleeding into the bullseye area. Additionally I wasn't certain how to evaluate the black pixels, whether they are to be included and if so which color to evaluate it as. I figured perhaps the code is designed to regenerate a position if black is picked. Additionally I wasn't certain how the code would handle antialiased pixels that do not match the exact rgb value of the majority of colors, so I recreated another image with no antialiasing that I then wrote a script and parsed the data from.
Attached is the image I produced and below is a PHP script I wrote to gather and output the following data:
<?php
$im = @imagecreatefrompng("5x2ki8jf.png");
$imx = imagesx($im);
$imy = imagesy($im);
$odds = 65535;
$pixels = array(
"Bullseye" => array("count" => 0, "pays" => 5),
"Double Bullseye" => array("count" => 0, "pays" => 10),
"Blue" => array("count" => 0, "pays" => 2),
"Blue Inner" => array("count" => 0, "pays" => 6),
"Blue Outer" => array("count" => 0, "pays" => 4),
"Purple" => array("count" => 0, "pays" => 1.2),
"Purple Inner" => array("count" => 0, "pays" => 3.6),
"Purple Outer" => array("count" => 0, "pays" => 2.4),
"Cyan" => array("count" => 0, "pays" => 1),
"Cyan Inner" => array("count" => 0, "pays" => 3),
"Cyan Outer" => array("count" => 0, "pays" => 2),
"Red" => array("count" => 0, "pays" => .5),
"Red Inner" => array("count" => 0, "pays" => 1.5),
"Red Outer" => array("count" => 0, "pays" => 1),
"Green" => array("count" => 0, "pays" => .2),
"Green Inner" => array("count" => 0, "pays" => .6),
"Green Outer" => array("count" => 0, "pays" => .4),
"Outside" => array("count" => 0, "pays" => 0),
"Black" => array("count" => 0, "pays" => 0)
);
for ($y = 0; $y <= $imy; $y++) {
for ($x = 0; $x <= $imx; $x++) {
$color_index = imagecolorat($im, $x, $y);
$color = imagecolorsforindex($im, $color_index);
$r = $color["red"];
$g = $color["green"];
$b = $color["blue"];
$a = $color["alpha"];
if ($r == 0 && $g == 0 && $b == 0 && $a == 127) $pixels["Outside"]["count"]++;
else if ($r == 0 && $g == 0 && $b == 0 && $a == 0) $pixels["Black"]["count"]++;
else if ($r == 74 && $g == 74 && $b == 255 && $a == 0) $pixels["Blue Outer"]["count"]++;
else if ($r == 255 && $g == 66 && $b == 66 && $a == 0) $pixels["Red Outer"]["count"]++;
else if ($r == 130 && $g == 254 && $b == 255 && $a == 0) $pixels["Cyan Outer"]["count"]++;
else if ($r == 255 && $g == 74 && $b == 253 && $a == 0) $pixels["Purple Outer"]["count"]++;
else if ($r == 0 && $g == 0 && $b == 255 && $a == 0) $pixels["Blue"]["count"]++;
else if ($r == 255 && $g == 0 && $b == 0 && $a == 0) $pixels["Red"]["count"]++;
else if ($r == 0 && $g == 252 && $b == 255 && $a == 0) $pixels["Cyan"]["count"]++;
else if ($r == 255 && $g == 0 && $b == 252 && $a == 0) $pixels["Purple"]["count"]++;
else if ($r == 77 && $g == 255 && $b == 77 && $a == 0) $pixels["Green Outer"]["count"]++;
else if ($r == 0 && $g == 255 && $b == 0 && $a == 0) $pixels["Green"]["count"]++;
else if ($r == 0 && $g == 0 && $b == 180 && $a == 0) $pixels["Blue Inner"]["count"]++;
else if ($r == 189 && $g == 0 && $b == 0 && $a == 0) $pixels["Red Inner"]["count"]++;
else if ($r == 0 && $g == 179 && $b == 181 && $a == 0) $pixels["Cyan Inner"]["count"]++;
else if ($r == 181 && $g == 0 && $b == 179 && $a == 0) $pixels["Purple Inner"]["count"]++;
else if ($r == 0 && $g == 181 && $b == 0 && $a == 0) $pixels["Green Inner"]["count"]++;
else if ($r == 189 && $g == 125 && $b == 0 && $a == 0) $pixels["Bullseye"]["count"]++;
else if ($r == 255 && $g == 168 && $b == 0 && $a == 0) $pixels["Double Bullseye"]["count"]++;
//else if ($r == && $g == && $b == && $a == 0) $pixels[""]["count"]++;
else echo "$r $g $b $a<br>";
}
}
echo "<table><tr><th>Color</th><th># Pixels</th><th>Chance</th><th>Payout</th></tr>";
foreach ($pixels as $color => $data) {
?>
<tr>
<td><?php echo $color; ?></td>
<td><?php echo $data["count"]; ?></td>
<td><?php echo number_format($data["count"] / $odds * 100, 2); ?>%</td>
<td><?php echo $data["pays"] * 100; ?>%</td>
</tr>
<?php } ?>
</table>
Color # Pixels Chance Payout
Double Bullseye 72 0.11% 1000%
Blue Inner 655 1.00% 600%
Bullseye 440 0.67% 500%
Blue Outer 760 1.16% 400%
Purple Inner 780 1.19% 360%
Cyan Inner 839 1.28% 300%
Purple Outer 923 1.41% 240%
Blue 4796 7.32% 200%
Cyan Outer 984 1.50% 200%
Red Inner 792 1.21% 150%
Purple 5622 8.58% 120%
Cyan 6173 9.42% 100%
Red Outer 958 1.46% 100%
Green Inner 1122 1.71% 60%
Red 5812 8.87% 50%
Green Outer 1282 1.96% 40%
Green 8196 12.51% 20%
Outside 16156 24.65% 0%
Black 9687 14.78% ?%
Chances of winning or breaking even: 0.11 + 1.00 + 0.67 + 1.16 + 1.19 + 1.28 + 1.41 + 7.32 + 1.50 + 1.21 + 8.58 + 9.42 + 1.46 = 36.31%
Chances of losing: 1.71 + 8.87 + 1.96 + 12.51 + 24.65 + 14.78 = 64.48%
Otherwise if as suggested above, black pixels are not included, then
Color # Pixels Chance Payout
Double Bullseye 72 0.13% 1000%
Blue Inner 655 1.17% 600%
Bullseye 440 0.79% 500%
Blue Outer 760 1.36% 400%
Purple Inner 780 1.40% 360%
Cyan Inner 839 1.50% 300%
Purple Outer 923 1.65% 240%
Blue 4796 8.59% 200%
Cyan Outer 984 1.76% 200%
Red Inner 792 1.42% 150%
Purple 5622 10.07% 120%
Cyan 6173 11.05% 100%
Red Outer 958 1.72% 100%
Green Inner 1122 2.01% 60%
Red 5812 10.41% 50%
Green Outer 1282 2.30% 40%
Green 8196 14.68% 20%
Outside 16156 28.93% 0%
Chances of winning or breaking even: 0.13 + 1.17 + 0.79 + 1.36 + 1.40 + 1.50 + 1.65 + 8.59 + 1.76 + 1.42 + 10.07 + 11.05 + 1.72 = 42.61%
Chances of losing: 2.01 + 10.41 + 2.30 + 14.68 + 28.93 = 58.33%
Note: The site was also mentioned a few times:
originally here,
laterly here,
more laterly here,
even more laterly here and
second to lastly here but not
here.
Also
Statistics