0

PHP で、フォーム上のポップダウン リストボックスが 100% (何も検査しない -- すべて通過させる) から 0% (すべて検査する)​​ までのコンベヤー ベルトを使用して工場検査プログラムを作成した場合、のウィジェットの検査期限は?

ちょっとした追加情報 -- ラベルには、「[x%] 個のウィジェットを検査せずに通過させる」と書かれています。

これ以上に、どのようにアルゴリズムをテストして、それが正しいことを証明できますか? たとえば、値が 100% で 99999 回実行された場合、インスペクションは表示されません。99% の値で、99999 回実行すると、繰り返し実行すると、ブルームーンで 1 つの検査が表示されるはずです。値が 0% の場合、99999 回実行すると、99999 個のウィジェットすべてが検査に送られます。

編集: 同僚は、私がここでオッズと確率を混同していると言っています. 彼女は私が確率を説明していると思いますか?

とにかく、このコードをテストとして試してみましたが、100 点と 50 点から 1 点以外は何もしません。ただし、1 ~ 49 は 50 のように機能し、51 ~ 100 は 100 のように機能します。

<?php

$nChance = @ $argv[1];
$nChance = intval($nChance);

for ($i = 1; $i <= 999999; $i++) {
  $nTest = rand(1,floor(100/$nChance));
  if (!($nTest == 1)) {
    die("INSPECT! i($i) rand($nTest) chance($nChance)\n");
  }
}

次に、このバリエーションを試してみましたが、常にINSPECTとだけ言われたため、失敗しました。

<?php

$nChance = @ $argv[1];
$nChance = intval($nChance);

for ($i = 1; $i <= 999999; $i++) {
  $nTest = rand(0,100);
  if (!($nTest < $nChance)) {
    die("INSPECT! i($i) rand($nTest) chance($nChance)\n");
  }
}
4

1 に答える 1

1
$nChance = 5; // % chance of inspection
$x       = 1; // number of seconds between products passing inspection point
while ( isLineRunning() )
{
    if( mt_rand(1,100) <= $nChance )
    {
        echo "INSPECT ITEM!";
    }
    sleep( $x );
};

これにより、回線の実行中に「x」秒ごとにチェックされます。

あなたの同僚はちょっと正しいですが、あなたの目的のために、乱数が(この場合)5以下であるかどうかに基づいて決定を下しています。 20 の確率で任意のアイテムを選択します。

于 2012-05-02T11:37:30.060 に答える