ホームページ > バックエンド開発 > Python チュートリアル > デカルト積はどのようにして繰り返しによる順列を生成できるのでしょうか?

デカルト積はどのようにして繰り返しによる順列を生成できるのでしょうか?

Barbara Streisand
リリース: 2024-12-21 21:52:38
オリジナル
430 人が閲覧しました

How Can Cartesian Product Generate Permutations with Repetitions?

デカルト積を使用した繰り返しによる順列の取得

はじめに

リストから順列を生成する場合、標準の itertools ライブラリはスキップします要素が繰り返される組み合わせ。繰り返しを含むすべての可能な順列を取得するには、デカルト積が使用されます。

Itertools Permutations

itertools の permutations() 関数は、繰り返しのない順列を生成します。サイコロの出目の場合、両方のサイコロに同じ数字が現れる (1, 1) のような組み合わせは除外されます。

デカルト積

間のデカルト積2 つのセットは、最初の要素が最初のセットに由来し、2 番目の要素が 2 番目のセットに由来する、すべての順序付きペアを含む新しいセットを作成します。たとえば、{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)]
ログイン後にコピー

結果の例

出力は、(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)]
ログイン後にコピー

ランダムダイスロール

ランダムなサイコロの出目は、デカルト積リストからペアを選択することで取得できます:

以上がデカルト積はどのようにして繰り返しによる順列を生成できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート