Mengacak (Random) file .txt menggunakan PHP


Solusi berikut akan menghasilkan baris acak terdistribusi secara merata dari file .txt yang relatif besar dengan ukuran baris maximum disesuaikan per file. Perhatikan fungsi PHP acak berikut ini :

function rand_line($fileName, $maxLineLength = 4096) {
    $handle = @fopen($fileName, "r");
    if ($handle) {
        $random_line = null;
        $line = null;
        $count = 0;
        while (($line = fgets($handle, $maxLineLength)) !== false) {
            $count++;
            // P(1/$count) probability of picking current line as random line
            if(rand() % $count == 0) {
              $random_line = $line;
            }
        }
        if (!feof($handle)) {
            echo "Error: unexpected fgets() fail\n";
            fclose($handle);
            return null;
        } else {
            fclose($handle);
        }
        return $random_line;
    }
}

// usage
echo rand_line("daftar-kata-inggris.txt");

echo "<br/><br/>".rand_line("daftar-kata-indonesia.txt");

Smoga bermanfaat....
Previous
Next Post »