我正在研究概率和可证明的公平开胸功能,我在想对吗?

时间:2019-01-06 22:40:50

标签: php laravel probability

Calculation to  work with

因此,我正在与我的一个客户一起开发“胸部开放模拟器”,除了实际概率部分之外,我已经完成了整个系统。

他向我发送了这种计算方法和算法,以了解不同的稀有物品应如何工作。

现在我完全陷入了困境,但是从这种逻辑来看,如果我掷出一个1-100的骰子,并且落在2上,我是否正确地打到了“超级稀有”等级?

我制作了一个函数,用于滚动介于0.00-100.00之间的骰子,并且该函数可以证明是公平的(每个滚动使用用户客户端种子和随机服务器种子+随机数),您可以在下面找到,我将如何利用它函数确定我命中了哪个层以及该层中的哪个项目?

public function roll()
{
  $client_seed = "client_seed";
  $server_seed = "server_seed";
  $nonce = 0;
  $secret = $client_seed."-".$nonce;
  $hash = hash_hmac('sha512', $secret, $server_seed); // Hash server_seed and secret

  for($i = 0; $i < strlen($hash); $i += 5)
  {
      $sub = substr($hash, $i, 5); //Split it
      if(strlen($sub) == 5)
      {
          $decimal_number = hexdec($sub); // Hex to decimal. At this point we have a random number

          if($decimal_number < 1000000)
          {
              $decimal_fourc = bcmod($decimal_number, 10000); //Get the modulus
              $final_decimal = bcdiv($decimal_fourc, 100, 2); //Divide the result by 100
                  $obj = new \stdClass();
                  $obj->seeds = new \stdClass();
                      $obj->seeds->server = $server_seed;
                      $obj->seeds->client = $client_seed;
                  $obj->result = new \stdClass();
                      $obj->result->nonce = $nonce;
                      $obj->result->lucky_number = number_format($final_decimal, 2);

          }
      } else {
          break;
      }
  }

  echo "<pre>";
  print_r($obj);
  echo "</pre>";
}

0 个答案:

没有答案