首頁 > 後端開發 > Python教學 > 笛卡爾積如何產生重複排列?

笛卡爾積如何產生重複排列?

Barbara Streisand
發布: 2024-12-21 21:52:38
原創
433 人瀏覽過

How Can Cartesian Product Generate Permutations with Repetitions?

使用笛卡爾積獲取重複排列

簡介

從列表生成排列時,標準itertools 庫會跳過元素重複的組合。為了獲得所有可能的排列,包括那些有重複的排列,使用笛卡爾積。

Itertools 排列

itertools 中的 permutations() 函數產生沒有重複的排列。在擲骰子的情況下,這不包括 (1, 1) 這樣的組合,其中兩個骰子上出現相同的數字。

笛卡爾積

之間的笛卡爾積兩個集合創建一個包含所有有序對的新集合,其中第一個元素來自第一個集合,第二個元素來自第二個集合。例如,{1, 2} 和​​ {3, 4} 的笛卡爾積為 {(1, 3), (1, 4), (2, 3), (2, 4)}。

將笛卡爾積應用於骰子

使用笛卡爾積產生所有可能的重複骰子組合產品:

import itertools
x = [1, 2, 3, 4, 5, 6]
dice_combinations = [p for p in itertools.product(x, repeat=2)]
登入後複製

範例結果

輸出將是36 個有序對的列表,包括(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)]
登入後複製

隨機骰子滾動

從笛卡爾乘積列表中選擇一對可以獲得隨機骰子滾動:

import random
random_roll = random.choice(dice_combinations)
登入後複製

以上是笛卡爾積如何產生重複排列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板