Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Contoh untuk menerangkan cara melaksanakan algoritma kebarangkalian boleh dikawal dalam PHP

Contoh untuk menerangkan cara melaksanakan algoritma kebarangkalian boleh dikawal dalam PHP

PHPz
PHPzasal
2023-04-04 17:27:19777semak imbas

Dalam pengaturcaraan komputer, nombor rawak adalah alat yang sangat penting. Dalam banyak senario aplikasi, kita perlu menjana nombor rawak untuk mensimulasikan atau mensimulasikan peristiwa rawak. Kadangkala, kita perlu mengawal kebarangkalian kejadian rawak ini, yang memerlukan penggunaan algoritma kebarangkalian yang boleh dikawal.

PHP ialah bahasa pengaturcaraan yang digunakan secara meluas dengan fleksibiliti dan kebolehskalaan yang kuat. Dalam PHP, kita boleh menggunakan fungsi rand() untuk menjana nombor rawak, tetapi nombor rawak yang dijana oleh fungsi rand() bukanlah nombor rawak benar, tetapi nombor rawak pseudo. Untuk melakukan ini, kita perlu menggunakan algoritma lain untuk mengawal kebarangkalian berlakunya nombor rawak yang dijana.

Algoritma kebarangkalian boleh dikawal yang biasa digunakan termasuk algoritma kongruen linear, algoritma mengocok Fisher–Yates, algoritma putaran Mersenne, dsb.

Di bawah, kami memperkenalkan idea untuk melaksanakan algoritma kebarangkalian yang boleh dikawal dalam PHP:

  1. Algoritma kekongruenan linear

Algoritma kekongruenan linear ialah a Algoritma penjanaan nombor rawak mudah yang boleh menjana jujukan pseudo-rawak dengan cepat. Idea asas adalah untuk menjana nombor rawak baharu melalui satu siri transformasi berdasarkan benih nombor rawak yang disediakan.

Dalam PHP, kita boleh menggunakan fungsi mt_rand() untuk melaksanakan algoritma kongruen linear. Benih rawak yang digunakan oleh fungsi ini dijana berdasarkan masa semasa dan boleh menjana nombor rawak pseudo yang baik. Pada masa yang sama, kita boleh menggunakan fungsi srand() untuk menetapkan benih nombor rawak, dan menggunakan fungsi rand() untuk menjana satu set urutan nombor rawak dengan kebarangkalian yang boleh dikawal.

Berikut ialah contoh kod mudah:

<?php
srand(time());
$chance = 30; //生成30%的事件
if (rand(1, 100) <= $chance) {
    // 某些操作
}
?>

Dalam kod di atas, rand(1, 100) akan menjana nombor rawak antara 1 dan 100. Jika nombor rawak kurang daripada atau sama dengan 30, beberapa operasi akan dilakukan. Dengan melaraskan nilai $peluang, kita boleh mengawal kebarangkalian sesuatu peristiwa berlaku dengan mudah.

  1. Algoritma shuffling Fisher–Yates

Algoritma Fisher-Yates ialah algoritma pilih atur rawak yang boleh digunakan untuk menjana jujukan rawak. Algoritma adalah berdasarkan idea yang sangat mudah: swap elemen dalam tatasusunan.

Dalam PHP, kita boleh menggunakan fungsi shuffle() untuk melaksanakan algoritma shuffling. Fungsi ini menyusun semula unsur-unsur dalam tatasusunan secara rawak. Pada masa yang sama, kita boleh menggunakan fungsi array_slice() untuk mendapatkan kepingan tatasusunan baharu untuk mencapai pemilihan rawak dengan kebarangkalian yang boleh dikawal.

Berikut ialah contoh kod ringkas:

<?php
$array = array("A", "B", "C", "D", "E");
shuffle($array);
$chance = 30; //生成30%的事件
if (in_array("A", array_slice($array, 0, count($array) * $chance / 100))) {
    // 某些操作
}
?>

Dalam kod di atas, fungsi shuffle() akan menyusun semula elemen secara rawak dalam tatasusunan $array. Dengan melaraskan nilai $peluang, kita boleh mengawal kebarangkalian sesuatu kejadian dengan mudah. Pada masa yang sama, fungsi array_slice() boleh digunakan untuk mendapatkan serpihan tatasusunan baharu dengan panjang tertentu, dengan itu mencapai pemilihan rawak dengan kebarangkalian yang boleh dikawal.

  1. Algoritma putaran Messine

Algoritma putaran Mersenne ialah algoritma penjanaan nombor rawak yang cekap yang boleh menjana jujukan nombor pseudo-rawak berkualiti tinggi. Algoritma ini terdiri daripada vektor keadaan yang sentiasa dikemas kini melalui beberapa transformasi untuk menjana nombor rawak.

Dalam PHP, kita boleh menggunakan perpustakaan algoritma Mersenne Twister untuk melaksanakan algoritma Mersenne Twister. Pustaka algoritma termasuk dua fungsi penjanaan nombor rawak: mt_rand() dan mt_srand(). Antaranya, fungsi mt_rand() digunakan untuk menjana nombor rawak, dan fungsi mt_srand() digunakan untuk menetapkan benih nombor rawak.

Berikut ialah contoh kod mudah:

<?php
mt_srand(time());
$chance = 30; //生成30%的事件
if (mt_rand(1, 100) <= $chance) {
    // 某些操作
}
?>

Dalam kod di atas, mt_rand(1, 100) akan menjana nombor rawak antara 1 dan 100. Jika nombor rawak kurang daripada atau sama dengan 30, beberapa operasi akan dilakukan. Dengan melaraskan nilai $peluang, kita boleh mengawal kebarangkalian sesuatu kejadian dengan mudah.

Ringkasan

Algoritma kebarangkalian boleh dikawal ialah kaedah pengaturcaraan yang biasa digunakan yang boleh mengawal kebarangkalian kejadian rawak apabila perlu. Dalam PHP, kita boleh menggunakan pelbagai algoritma untuk mencapai penjanaan nombor rawak dengan kebarangkalian yang boleh dikawal. Kita boleh memilih algoritma yang sesuai mengikut keperluan khusus untuk mencapai matlamat kita.

Atas ialah kandungan terperinci Contoh untuk menerangkan cara melaksanakan algoritma kebarangkalian boleh dikawal dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn