質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.61%

  • PHP

    19882questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

phpで競馬のオッズを想定してマイナスが出ないプログラムを簡単にかきたい

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 861

YamamotoHiroki

score 69

phpで競馬のオッズを想定してマイナスが出ないプログラムを簡単にかきたいです。
プログラム自体はかけたのですがどうも長いです。
流れとしては
賭けれる馬が7頭いると想定してそれぞれの倍率(オッズ)を入力します。
次にそれをブラウザで出力すると7頭それぞれに賭けるべき金額が算出されます。
競馬では100円単位で賭け金を決めれるので初めは全馬に100円賭けたとしています。

例)

馬3頭がいてそれぞれのオッズが
1番:2.0倍
2番:2.5倍
3番:8.0倍だとすれば

馬が3頭なので初めの賭け金合計(total)は300円です。

ここからfor文をまわしていきます。

1番の馬のオッズは2倍なので払戻金(back)は200円
total > backとなる場合は損するので賭け金を上げます。
賭け金を100円から200円に上げるとbackは400円
ここで賭け金を100円上げたのでtotalは300円から400円になります。
total = backとなりますのでもう一度ループしてもらいます。
これを繰り返して全部の馬に対してtotal < backとなるような賭け方を算出します。

以下プログラムです、長いですがほとんど同じことの繰り返しなのでどこをどうしたら簡単にかけるのかご教授頂きたいです。
わかりにくい文章で申し訳ありませんがよろしくお願いいたします。
<html xmlns="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<?php
header("Content-Type: text/html; charset=UTF-8");    
//それぞれに賭ける賭け金(100円スタート)
    $bet = array();
    for($i=0;$i<7;$i++){ $bet[$i]=100; }
    $odds = array();
    $odds[0]=2.1;
    $odds[1]=3.5;
    $odds[2]=5.7;
    $odds[3]=6.5;
    $odds[4]=68.6;
    $odds[5]=70.1;
    $odds[6]=127.2;
//合計賭け金
    $total[0] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
//払い戻し額
    $back[0] = $bet[0]*$odds[0];
//5000回以上ループが続く場合終了する
    for($i=0;$i < 5000 ;$i++){
    if($total[0]>$back[0]){
        $bet[0] = $bet[0] + 100;   
        $total[0] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
        $back[0] = $bet[0]*$odds[0];
        $total[1] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
        $back[1] = $bet[1]*$odds[1];
        $total[2] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
        $back[2] = $bet[2]*$odds[2];        
        $total[3] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
        $back[3] = $bet[3]*$odds[3];
        $total[4] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
        $back[4] = $bet[4]*$odds[4];
        $total[5] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
        $back[5] = $bet[5]*$odds[5];
        $total[6] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
        $back[6] = $bet[6]*$odds[6];        
    
    }elseif($total[1]>$back[1]){
            $bet[1] = $bet[1] + 100;   
            $total[0] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[0] = $bet[0]*$odds[0];
            $total[1] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[1] = $bet[1]*$odds[1];
            $total[2] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[2] = $bet[2]*$odds[2];
            $total[3] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[3] = $bet[3]*$odds[3];
            $total[4] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[4] = $bet[4]*$odds[4];
            $total[5] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[5] = $bet[5]*$odds[5];
            $total[6] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[6] = $bet[6]*$odds[6];  
    }elseif($total[2]>$back[2]){
            $bet[2] = $bet[2] + 100;   
            $total[0] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[0] = $bet[0]*$odds[0];
            $total[1] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[1] = $bet[1]*$odds[1];
            $total[2] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[2] = $bet[2]*$odds[2];
            $total[3] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[3] = $bet[3]*$odds[3];
            $total[4] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[4] = $bet[4]*$odds[4];
            $total[5] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[5] = $bet[5]*$odds[5];
            $total[6] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[6] = $bet[6]*$odds[6];              
        
    }elseif($total[3]>$back[3]){
            $bet[3] = $bet[3] + 100;   
            
            $total[0] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[0] = $bet[0]*$odds[0];
            $total[2] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[2] = $bet[2]*$odds[2];
            $total[1] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[1] = $bet[1]*$odds[1];
            $total[3] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[3] = $bet[3]*$odds[3];
            $total[4] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[4] = $bet[4]*$odds[4];
            $total[5] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[5] = $bet[5]*$odds[5];
            $total[6] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[6] = $bet[6]*$odds[6];              
        
    }elseif($total[4]>$back[4]){
            $bet[4] = $bet[4] + 100;  
            $total[0] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[0] = $bet[0]*$odds[0];
            $total[1] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[1] = $bet[1]*$odds[1];
            $total[2] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[2] = $bet[2]*$odds[2];
            $total[3] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[3] = $bet[3]*$odds[3];
            $total[4] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[4] = $bet[4]*$odds[4];
            $total[5] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[5] = $bet[5]*$odds[5];
            $total[6] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[6] = $bet[6]*$odds[6];              
    }elseif($total[5]>$back[5]){
            $bet[5] = $bet[5] + 100;  
            $total[0] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[0] = $bet[0]*$odds[0];
            $total[1] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[1] = $bet[1]*$odds[1];
            $total[2] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[2] = $bet[2]*$odds[2];
            $total[3] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[3] = $bet[3]*$odds[3];
            $total[4] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[4] = $bet[4]*$odds[4];
            $total[5] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[5] = $bet[5]*$odds[5];
            $total[6] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];
            $back[6] = $bet[6]*$odds[6];              
        
    }
文字制限で入りきりませんでした、つづきます
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

checkベストアンサー

+2

プログラミングは同じ文を書かないほど、コード量が減りバグが生まれにくいので一石二鳥です。

例えば以下のコード、何度も書いているのでコード量が増えてしまい、さらに後の修正が大変になります。

// 冗長なコード
$total[0] = $bet[0]+$bet[1]+$bet[2]+$bet[3]+$bet[4]+$bet[5]+$bet[6];

基本的な「配列の合計」などはすでに関数として用意されていることが多いです。
調べるとarray_sumという関数が見つかります。これを使えば以下のように書けます。

// 標準の関数の利用
$total[0] = array_sum($bet);

次にコードを追っていくと
$totalが配列で定義されていますが、どの段階でも同じ値を取っていることがわかります。
従って配列を見直して普通の変数にします。

// 配列の見直し
$total = array_sum($bet);

次に条件分岐の部分の中身はすべて同様の処理を行っているので、
配列のインデックスを変数にしてループで処理しましょう。
// 分岐の改善
for ($i = 1; $i <= count($odds); $i++) {
    if($back[$i] > $total)
    {
      $bet[$i] = $bet[$i] + 100; 
      $total = array_sum($bet);
      $back[$i] = $bet[$i] * $odds[$i]
    }
}

これを含めてすべて直しますと以下のようになります。

// 配列定義
$bet = array();
$odds = array();
$back = array(); // 記述忘れ?

// 初期化
for($i=0;$i<7;$i++){ $bet[$i]=100; }
$odds[0]=2.1;
$odds[1]=3.5;
$odds[2]=5.7;
$odds[3]=6.5;
$odds[4]=68.6;
$odds[5]=70.1;
$odds[6]=127.2;

$total = array_sum($bet);
$back[0] = $bet[0]*$odds[0];

for($i=0;$i < 5000 ;$i++){
  for ($j = 0; $j < count($odds); $j++) {
    if($back[$j] > $total){
      $bet[$j] = $bet[$j] + 100; 
      $total = array_sum($bet);
      for($k = 0; $k < count($odds); $k++){
        $back[$k] = $bet[$k] * $odds[$k];
      }
    }
  }
}

さらに私の場合は以下のように修正します。

// 関数定義1
function updateBack()
{
  for($k = 0; $k < count($odds); $k++){
    $back[$k] = $bet[$k] * $odds[$k];
  }
}

// 関数定義2
function updateTotal()
{
  $total = array_sum($bet);
}

// 配列定義
$bet = array();
$odds = array();
$back = array(); // 記述忘れ?

// 初期化
$odds[0]=2.1;
$odds[1]=3.5;
$odds[2]=5.7;
$odds[3]=6.5;
$odds[4]=68.6;
$odds[5]=70.1;
$odds[6]=127.2;
for($i=0;$i<count($odds);$i++){ $bet[$i]=100; }

updateTotal();
updateBack();

// 賭け金推定
for($i=0;$i < 5000 ;$i++){
  $changedFlag = FALSE;
  for ($j = 0; $j < count($odds); $j++) {
    if($back[$j] > $total){
      $bet[$j] = $bet[$j] + 100; 
      updateTotal();
      updateBack();
      $changedFlag = TRUE;
      break;
    }
  }
  // 変更点がなかった場合ループから抜ける
  if(!$changedFlag){
    break;
  }
}

申し訳ありませんが、動作確認はしておりません。
バグ等があればご報告ください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/10/12 01:23

    ありがとうございます、できました!

    ですがfunctionが使えないです。

    成功コード

    <html xmlns="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>


    <?php
    header("Content-Type: text/html; charset=UTF-8");





    //それぞれの倍率(オッズ)
    $odds = array();
    $odds[0]=3.7;
    $odds[1]=4.8;
    $odds[2]=4.5;
    $odds[3]=5.8;
    $odds[4]=8.5;
    //$odds[5]=10.9;
    //$odds[6]=16.0;
    //$odds[7]=15.9;
    //$odds[8]=24.1;
    //$odds[9]=15.1;
    //$odds[10]=8.2;
    //$odds[11]=13;
    //$odds[12]=19.2;
    //$odds[13]=16.3;
    //$odds[14]=19.2;
    //$odds[15]=16.3;
    //$odds[16]=19;
    //$odds[17]=65.8;

    //それぞれに賭ける賭け金(100円スタート)
    $bet = array();
    for($i=0;$i<count($odds);$i++){
    $bet[$i]=100;
    }

    //合計賭け金
    $total_bet = array_sum($bet);

    //払い戻し額
    $back = array();
    $back[0] = $bet[0]*$odds[0];

    //59000回以上ループが続く場合終了する
    for($i=0;$i < 59000 ;$i++){
    for($j=0;$j<count($odds);$j++){
    if($total_bet>$back[$j]){
    $bet[$j] = $bet[$j] + 100;
    $total_bet = array_sum($bet);


    for($k=0;$k<count($odds);$k++){
    $back[$k] = $bet[$k]*$odds[$k];
    }

    }else{
    if($i == 58999){
    $end = 1;
    }else{
    $end =0;
    }
    }
    }
    }

    if($end == 1 ){


    for($l=1;$l<=count($odds);$l++){

    echo "賭け金".$l.":".$bet[$l-1]." 払戻金".$l.":".$back[$l-1]."</br>";

    }

    echo "合計賭け金:<text style='color:red; font-size:20px;''>".$total_bet."円</p></br>";
    }else{
    echo "59000回以上ループしたので終了しました</br>";
    }

    ?>

    </body>
    </html>

    キャンセル

  • 2015/10/12 01:27

    失敗コード

    <html xmlns="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>


    <?php
    header("Content-Type: text/html; charset=UTF-8");



    function updateTotal(){
    $total_bet = array_sum($bet);
    }

    //それぞれの倍率(オッズ)
    $odds = array();
    $odds[0]=3.7;
    $odds[1]=4.8;
    $odds[2]=4.5;
    $odds[3]=8.8;
    $odds[4]=18.5;
    $odds[5]=19.9;
    //$odds[6]=16.0;
    //$odds[7]=15.9;
    //$odds[8]=24.1;
    //$odds[9]=15.1;
    //$odds[10]=8.2;
    //$odds[11]=13;
    //$odds[12]=19.2;
    //$odds[13]=16.3;
    //$odds[14]=19.2;
    //$odds[15]=16.3;
    //$odds[16]=19;
    //$odds[17]=65.8;

    //それぞれに賭ける賭け金(100円スタート)
    $bet = array();
    for($i=0;$i<count($odds);$i++){
    $bet[$i]=100;
    }

    //合計賭け金
    updateTotal();

    //払い戻し額
    $back = array();
    $back[0] = $bet[0]*$odds[0];

    //59000回以上ループが続く場合終了する
    for($i=0;$i < 59000 ;$i++){
    for($j=0;$j<count($odds);$j++){
    if($total_bet>$back[$j]){
    $bet[$j] = $bet[$j] + 100;
    updateTotal();


    for($k=0;$k<count($odds);$k++){
    $back[$k] = $bet[$k]*$odds[$k];
    }

    }else{
    if($i == 58999){
    $end = 1;
    }else{
    $end =0;
    }
    }
    }
    }

    if($end == 1 ){


    for($l=1;$l<=count($odds);$l++){

    echo "賭け金".$l.":".$bet[$l-1]." 払戻金".$l.":".$back[$l-1]."</br>";

    }

    echo "合計賭け金:<text style='color:red; font-size:20px;''>".$total_bet."円</p></br>";
    }else{
    echo "59000回以上ループしたので終了しました</br>";
    }

    ?>

    </body>
    </html>

    キャンセル

  • 2015/10/12 01:35

    関数の前に変数を一度定義しておくとどうでしょうか?

    $total_bet = 0
    $bet = array() //特にarrayは先に宣言しとかないと怒られることが多い気がします
    function updateTotal(){
    $total_bet = array_sum($bet);
    }

    キャンセル

+1

出費を管理するWalletクラスと倍率・賭け金を管理するHorseクラスを定義する形で書いてみました。
PHP5.0以上で動作するはずです。

処理を役割ごとにまとめてクラス化してやれば、より分かりやすく、変更しやすいコードが書けるかも知れません。
(このコードがそうだとは言えませんが)

$wallet = new Wallet();

$horses = array(
    new Horse(2.1, $wallet->take(100)),
    new Horse(3.5, $wallet->take(100)),
    new Horse(5.7, $wallet->take(100)),
    new Horse(6.5, $wallet->take(100)),
    new Horse(68.6, $wallet->take(100)),
    new Horse(70.1, $wallet->take(100)),
    new Horse(127.2, $wallet->take(100)),
);

$counter = 0;
while (!isCertainVictory($horses, $wallet)) {
    foreach ($horses as $horse) {
        if ($horse->getDevidend() < $wallet->getSpending()) {
            $horse->addWager($wallet->take(100));
        }

        if ($counter++ >= 5000) {
            echo "Reached to max count.\n\n";
            break 2;
        }
    }
}

foreach ($horses as $horse) {
    echo 'Odds=' . $horse->getOdds() . ', Wager=' . $horse->getWager() . ', Devidend=' . $horse->getDevidend() . "\n";
}

echo "\n";
echo 'Spending=' . $wallet->getSpending() . "\n";

echo "\n";
echo (isCertainVictory($horses, $wallet) ? 'I win certainly!' : 'There is a possibility of losing...') . "\n";

function isCertainVictory(array $horses, Wallet $wallet) {
    foreach ($horses as $horse) {
        if ($horse->getDevidend() < $wallet->getSpending()) {
            return false;
        }
    }
    return true;
}

/**
 * 馬。
 * 倍率 (odds) と賭け金 (wager) を管理し、配当金 (devidend) を計算する。
 */
class Horse {

    private $odds = 0.0;

    private $wager = 0;

    function __construct($odds, $initialWager) {
        $this->odds = (float) $odds;
        $this->wager = $initialWager;
    }

    function getOdds() {
        return $this->odds;
    }

    function addWager($wager) {
        $this->wager += $wager;
    }

    function getWager() {
        return $this->wager;
    }

    function getDevidend() {
        return (int) ($this->odds * $this->wager);
    }
}

/**
 * 無限にお金を取り出せる魔法の財布。
 * 出費 (spending) を管理する。
 */
class Wallet {

    private $spending = 0;

    function take($amount) {
        $this->spending += $amount;
        return $amount;
    }

    function getSpending() {
        return $this->spending;
    }
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

質問の回答ではないのですが、気になったので。

そもそものやりたいことは
「どの馬が勝っても、利益が出るような単勝の買い方を求める」ということですよね?

例えばどのようなオッズの組み合わせならそれが可能ですか?

オッズにも、「胴元が利益を得る」という前提条件があるので、難しいと思います

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/10/12 01:21

    詳しい話になるのですが競馬にはオッズの歪みというものがありまして、胴元が利益(25%)をとっても尚絶対にプラス収支になる賭け方があります、、(出現率2%程度ですが)

    >そもそものやりたいことは
    「どの馬が勝っても、利益が出るような単勝の買い方を求める」ということですよね?

    単勝に限らず馬連も想定しています、各馬券のオッズは互いに独立ですのでオッズの歪みが発生します。
    質問ではまさかこんなところを突かれると思っていなかったので簡単のため詳しい話は伏せました、すみません。


    >例えばどのようなオッズの組み合わせならそれが可能ですか?

    このページを参考にしていただければわかるかもしれません。
    http://d.hatena.ne.jp/wao_o/20130222/p6

    文章が苦手なのでうまく伝わらないかもしれませんが

    3頭走るとして単勝オッズ
    1番:1.1倍
    2番:2.3倍
    3番:3.9倍
    のときに
    馬単のオッズが
    2番軸<1番軸<3番軸
    になっているときに稀に発生したります(売上が低い競馬場で)。

    すいません、ご指摘ありがとうございました。汗

    キャンセル

-3

関数作れば数行で済みます。

詳しくはここを参照してください。
http://php.net/manual/ja/functions.arguments.php

http://php.net/manual/ja/functions.returning-values.php

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    php ログインについて

    お世話になります。 現在phpでログイン画面を作っているのですがうまくいかず困っています。 ********** <?php require_once 'h.php'; # 

  • 解決済

    PHP:Twigで配列を表示させたい。

    Twigの質問です。 今、PHPで次の配列があるとします。 $arr = array(); $arr[1] = "うさぎ"; $arr[2] = "かめ"; $arr[3] = 

  • 解決済

    PHPでJpGraphを使ってグラフが表示できません。

    PHPでJpGraphを使ってグラフが表示できません。どなたか教えていただきませんでしょうか? phpMyAdminからデータを読み込んでます。 スプリクトは下記の通りです。 <?

  • 解決済

    画面遷移なしで編集したいのですが、書き方が全くわかりません。。

    「編集」と「削除」を画面遷移なしで実行したいのですが、ajaxが分からず困っています。どうすれば、意図した結果が得られるでしょうか?>< PHPとMySQLを使っています。 PH

  • 受付中

    phpで、ファイルのx行目だけを書き換えたいです

    phpで、ファイルの特定の行を書き換えたいため、調べてみると、全部\n区切りの配列にしてから、必要な要素を書き換えろ、とありました。 その為、以下のようにしてみました。 ・ ・

  • 解決済

    PHP 文字列抽出

    ある文字列から特定の文字列を抽出する方法で苦戦しています。 $hoge = #2#1900#3#3000#2#1800 このような文字列あり、#2が何回来ているか、また#2のあ

  • 解決済

    タイムカード作成に関して

    現在個人利用(練習)でタイムカードを作成してみたくやっています。 ページの構成 // index.php 名前を選択して打刻 // insert.php index.ph

  • 解決済

    PHP エスケープ処理

    前に投稿していたPHPのプログラムで一つだけうまく出力できないのがありました。 <!DOCTYPE html> <html lang="ja"> <head>

同じタグがついた質問を見る

  • PHP

    19882questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。