Pengenalan
Apabila menjana pilih atur daripada senarai, perpustakaan itertools standard melangkau gabungan di mana unsur berulang. Untuk mendapatkan semua pilih atur yang mungkin, termasuk yang mempunyai pengulangan, produk Cartesian digunakan.
Pilihan Itertools
Fungsi pilih atur() dalam itertools menjana pilihatur tanpa ulangan. Dalam kes gulung dadu, ini tidak termasuk kombinasi seperti (1, 1), di mana nombor yang sama muncul pada kedua-dua dadu.
Produk Cartesian
Produk Cartesian antara dua set mencipta set baharu yang mengandungi semua pasangan tersusun di mana elemen pertama datang dari set pertama dan elemen kedua datang dari set kedua. Contohnya, hasil darab Cartesian {1, 2} dan {3, 4} ialah {(1, 3), (1, 4), (2, 3), (2, 4)}.
Memohon Produk Cartesian pada Gulungan Dadu
Untuk menjana semua kombinasi gulungan dadu yang mungkin dengan ulangan menggunakan Cartesian produk:
import itertools x = [1, 2, 3, 4, 5, 6] dice_combinations = [p for p in itertools.product(x, repeat=2)]
Contoh Hasil
Keluaran akan menjadi senarai 36 pasangan tersusun, termasuk kombinasi seperti (1, 1):
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (5, 6), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6)]
Baling Dadu Rawak
Baling dadu rawak boleh diperolehi dengan memilih sepasang daripada senarai produk Cartesian:
import random random_roll = random.choice(dice_combinations)
Atas ialah kandungan terperinci Bagaimanakah Produk Cartesian Boleh Menjana Pilihatur dengan Ulangan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!