1
0

はじめに

ABテストのために組んだスクリプトの精度を計算してみた。

問題

本当に50%で結果が出るのか文献が見つからなかったので。
(というか探すより自分で調べたほうが早い)

解決方法

下記を実行するのみ。

test.php
<?php

function testRandomness($arr, $trials = 1000) {
    $results = [
        'count0' => 0,
        'count1' => 0
    ];

    for ($i = 0; $i < $trials; $i++) {
        $result = mt_rand(...$arr);
        if ($result < $arr[1]/2) {
            $results['count0']++;
        } else {
            $results['count1']++;
        }
    }

    return $results;
}

// 試行回数を指定して関数を実行
$trials = 1000000; // ここで試行回数を指定
$results = testRandomness([0,1],$trials);

echo "試行回数: $trials\n";
echo "0の割合: " . ($results['count0'] / $trials * 100) . "%\n";
echo "1の割合: " . ($results['count1'] / $trials * 100) . "%\n";


$results = testRandomness([0,1000],$trials);

echo "試行回数: $trials\n";
echo "0の割合: " . ($results['count0'] / $trials * 100) . "%\n";
echo "1の割合: " . ($results['count1'] / $trials * 100) . "%\n";

$results = testRandomness([0,100000],$trials);

echo "試行回数: $trials\n";
echo "0の割合: " . ($results['count0'] / $trials * 100) . "%\n";
echo "1の割合: " . ($results['count1'] / $trials * 100) . "%\n";

結果

50%といって良さそうな気がします。

0,1 0,1000 0,100000
n1 0の割合: 49.945%
1の割合: 50.055%
0の割合: 49.9088%
1の割合: 50.0912%
0の割合: 50.0147%
1の割合: 49.9853%
n2 0の割合: 49.9824%
1の割合: 50.0176%
0の割合: 49.9858%
1の割合: 50.0142%
0の割合: 49.9405%
1の割合: 50.0595%
n3 0の割合: 50.0394%
1の割合: 49.9606%
0の割合: 49.9034%
1の割合: 50.0966%
0の割合: 49.9573%
1の割合: 50.0427%

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0