Daftar Referensi Python

random.choices() memilih beberapa item acak dengan pengembalian. Item yang sama boleh muncul berkali-kali dan peluang tiap item dapat diberi bobot.

Catatan: contoh memakai random.seed(42) agar output dapat diverifikasi. Hapus seed untuk hasil yang berubah setiap kali dijalankan.

Sintaks

random.choices(
    population, weights=None, *, cum_weights=None, k=1
)

Parameter

Parameter Wajib? Keterangan
population Ya Sequence sumber pilihan
weights Tidak Bobot relatif setiap item, default sama rata
cum_weights Tidak Bobot kumulatif; keyword-only dan tidak boleh dipakai bersama weights
k Tidak Jumlah pilihan; keyword-only, default 1

Nilai balik: list sepanjang k. Item dapat muncul lebih dari sekali.

Contoh

import random

random.seed(42)
print(random.choices(["A", "B", "C"], k=5))

Coba di IDE

Output:

['B', 'A', 'A', 'A', 'C']

Contoh Lainnya

Memberi bobot peluang

import random

random.seed(42)
hasil = random.choices(
    ["gagal", "berhasil"], weights=[1, 9], k=5
)
print(hasil)

Coba di IDE

Output:

['berhasil', 'gagal', 'berhasil', 'berhasil', 'berhasil']

Memakai bobot kumulatif

import random

random.seed(42)
hasil = random.choices(
    ["kecil", "sedang", "besar"],
    cum_weights=[2, 5, 10],
    k=4,
)
print(hasil)

Coba di IDE

Output:

['besar', 'kecil', 'sedang', 'sedang']

Item yang sama boleh terpilih berulang

import random

random.seed(42)
print(random.choices("AB", k=6))

Coba di IDE

Output:

['B', 'A', 'A', 'A', 'B', 'B']

Kesalahan Umum

  • choices() memakai pengembalian, sehingga duplikat adalah perilaku normal.
  • Memberikan weights dan cum_weights sekaligus menghasilkan TypeError.
  • Semua bobot bernilai nol menghasilkan ValueError.
  • Population kosong menghasilkan IndexError; panjang bobot juga harus sama dengan population.

Pelajari Lebih Lanjut