Knockout adalah permainan bola basket tempat para pemain menembak secara bergantian. Ini dimainkan sebagai urutan dari kontes dua pemain, yang masing-masing memiliki kemungkinan "menjatuhkan" salah satu dari pemain tersebut.
Misalkan para pemain A B C D
dan peluang mereka menembak dan membuat keranjang 0.1 0.2 0.3 0.4
masing - masing, terlepas dari pemain lain dalam kontes. Dua pemain di garis depan, A
dan B
, "berkelahi." Sejak A
berjalan lebih dulu, dia adalah bek , dalam bahaya disingkirkan, dan B
adalah penyerang , dan tidak dalam bahaya eliminasi langsung. A
tunas dulu. Jika A
berhasil, A
telah berhasil dipertahankan, dan pergi ke garis belakang. Garis akan berubah menjadi B C D A
. Jika A
tidak berhasil, maka B
tunas. Jika B
berhasil, maka A
keluar dan B
pergi ke belakang garis, sehingga garis menjadi C D B
. Jika tidakA
atau B
membuatnya, proses berulang, dengan A
menembak lagi, sampai salah satu A
atau B
membuat keranjang.
Misalkan garis diubah menjadi B C D A
( A
telah berhasil dipertahankan). Sekarang, B
dan C
"berkelahi," dengan B
menjadi pembela, dan C
menjadi penyerang. Proses ini berulang sampai hanya satu orang yang tersisa. Orang itu adalah pemenangnya.
Tugas Anda adalah menghitung probabilitas setiap orang yang menang mengingat kemungkinan mereka akan membuat keranjang.
Masukan :
Daftar angka, seperti 0.1 0.2
atau 0.5 0.5 0.5 0.5
, di mana angka ke- n adalah kesempatan bahwa pemain ke- n akan membuat keranjang. Anda dapat mengambil input ini dalam format apa pun yang Anda suka, termasuk sebagai parameter untuk suatu fungsi.
Keluaran :
Daftar angka, di mana angka ke- n adalah kesempatan bahwa pemain ke- n akan memenangkan pertandingan. Angka Anda harus akurat ke setidaknya dua tempat desimal setidaknya 90% dari waktu. Ini berarti bahwa Anda dapat menggunakan pendekatan berbasis simulasi. Namun, jika kode Anda tidak berdasarkan simulasi ( dijamin untuk mengembalikan jawaban yang benar ke setidaknya 6 tempat desimal) maka ambil 30% dari skor Anda.
Contoh antara 0.5 0.5
: Panggil para pemain A
dan B
. Membiarkan p
menjadi probabilitas menang. A
memiliki 2/3
peluang untuk berhasil bertahan (karena ada 1/2
peluang yang A
mencetak gol, 1/4
peluang yang A
meleset dan B
skor, dan 1/4
peluang yang gagal dan proses berulang). Jika A
gagal bertahan, dia tersingkir dan B
menang. Jika A
bertahan, maka garis itu menjadi B A
. Karena situasinya simetris, probabilitas untuk A
menang adalah (1 - p)
. Kita mendapatkan:
p = 2/3 * (1 - p) + 1/3 * 0
. Memecahkan, kita dapatkan p = 2/5
. Outputnya harus 2/5 3/5
atau 0.4 0.6
.
Saya tidak cukup baik dengan probabilitas untuk melakukan contoh yang lebih kompleks.
Jika Anda membutuhkan lebih banyak kasus uji, berikut adalah beberapa:
0.1 0.2 0.3 0.4 --> 0.01 0.12 0.25 0.62
0.99 0.99 --> 0.5 0.5 (it's not exact, but if you round to two decimal places, you get 0.5 and 0.5)
sumber