Skip to content

Instantly share code, notes, and snippets.

@peio
Created November 29, 2011 07:27
Show Gist options
  • Select an option

  • Save peio/1403865 to your computer and use it in GitHub Desktop.

Select an option

Save peio/1403865 to your computer and use it in GitHub Desktop.
Deal or no deal - bulgarian version
#!/usr/bin/php-cgi -q
<?php
include "stats.lib.php";
# Сделка или не
// Брой игри, които ще бъдат изиграни. От значение за статистиката на резултатите, които ще се покажат:
$games = 1;
for ($game = 0; $game < $games; $game++) { //Начало на играта
$cases = array ( 0.1, 0.2, 0.5, 1, 5, 10, 25, 50, 100, 200, 300, 750, 1000, 2500, 5000, 7500, 10000, 12500, 15500, 25000, 50000, 100000 ); // Суми в кутиите
$remove_boxes = array( 6, 3, 3, 3, 3, 2 ); // Брой кутии, които се премахват на всеки етап
$highest = 10474.63; // средното на началните кутии (https://secure.wikimedia.org/wikipedia/en/wiki/Expected_value)
$stage = 0; // Етап
if ( $games < 2) {
print "Начална обща сума на кутиите: 230441.80\nСредна (очаквана) стойност: 10474.63\nСтандартно отклонение: 23193.71";
}
// Начало на теглене
for ($i=0; $i < sizeof($remove_boxes); $i++ ) {
if ( $games < 2) {
print "\n\n ------------- Етап ".($i+1)."------------- \n";
}
// Избор на кутии
$remove = array_rand($cases, $remove_boxes[$i]);
// Отваряне "премахване" на всяка избрана кутия
foreach($remove as $box) {
if ( $games < 2) {
print 'Отворена кутия с '.$cases[$box]." лв.\n" ;
}
unset( $cases[$box] );
}
if ( $games < 2) {
print "Кутии в игра:\n";
print_r ($cases);
}
// Изчисляване на обща и средна сума на сумите в кутиите
$sum = array_sum($cases); // Обща сума в кутиите
$avg = array_sum($cases)/sizeof($cases); // Средна сума на оставащите кутии
$median = median($cases);
if ( $games < 2) {
$std_dev = std_dev ($cases);
printf("Обща сума на кутиите : %.2f лв.\n", $sum );
printf("Средна сума (оферта) : %.2f лв.\n", $avg );
printf("Медиана : %.2f лв.\n", $median );
printf("Стандартно отклонение: %.2f лв.\n", $std_dev );
}
// Стойности за повече игри
if ( $games > 2 ) {
// Средна медиана по етапи
$avg_median[($i+1)][] = $median;
// Средна оферта по етапи
$avg_offer[($i+1)][] = $avg;
// Най-висока оферта (средна стойност)
if ( $avg > $highest ) {
$highest = $avg; // Сума на най-високата оферта
$high_offer_stage = $i+1; // Етап в който е достигната
}
}
} // Край на отварянето на кутии
if ( $games > 2 ){
# На кой етап е най-високата оферта вкл. и началния етап
$highest_offer_stage[$high_offer_stage]++;
}
} // Край на играта
if ( 3 <= $games and $games <= 5) {
print "Средна оферта:\n";
print_r($avg_offer);
}
// Статистика
if ( $games > 2 ) {
ksort($highest_offer_stage );
print "На кой етап е най-високата оферта вкл. и началния етап:\n";
foreach ( $highest_offer_stage as $s => $o) {
print $s.' - '.$o.' пъти - '.( $o / $games).'%'."\n";
}
print "Средна медиана по етапи:\n";
foreach ( $avg_median as $k => $offers ) {
printf ("%d - %.2f лева\n", $k, ( array_sum($offers)/sizeof($offers) ) ) ;
}
# Средна оферта по етапи
print "Средна оферта по етапи:\n";
print "0 - 10474.63 лева\n";
foreach ( $avg_offer as $k => $offers ) {
printf ("%d - %.2f лева\n", $k, ( array_sum($offers)/sizeof($offers) ) ) ;
if ($games <= 5 ) {
// print sizeof($offers)."\n";
print "Оферти на етап:\n";
print_r($offers);
}
}
}
?>
@peio

peio commented Nov 29, 2011

Copy link
Copy Markdown
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment