Skip to main content

使い方

from tcgshuffle import evaluate
evaluate(評価したいシャッフル関数, デッキ枚数)

出力

  • position_prob_map: 元々i番目にあったカードが、シャッフル後デッキ内のどこに移動した頻度
  • neighbor_prob_map: 元々i番目にあったカードとj番目にあったカードについて、シャッフル後にそれらが隣り合っていた頻度
  • position_badness: position_prob_mapの頻度が、理想頻度(1 / デッキ枚数)とどの程度乖離しているか
  • neighbor_badness: neighbor_prob_map、理想頻度(1 / (デッキ枚数 - 1))とどの程度乖離しているか
  • total_position_badness: 総合評価として、理想頻度を1とした場合にposition_badnessの偏りがどの程度大きいかを示す(もっとも悪い数字をデッキ枚数分取り出し平均したもの)
  • total_neighbor_badness: 総合評価として、理想頻度を1とした場合にneighbor_badnessの偏りがどの程度大きいかを示す(もっとも悪い数字をデッキ枚数分取り出し平均したもの)

シャッフル関数定義方法

説明準備中...

basic example 1

  1. ディールシャッフル(6つの束)
  2. ファローシャッフル(5回連続)
  3. ヒンドゥーシャッフル(4回シャカシャカする作業を1回)
  4. ファローシャッフル(5回連続)
  5. ヒンドゥーシャッフル(4回シャカシャカする作業を1回)
  6. カット(3分割)
from tcgshuffle import Deck, Shuffler, evaluate
def shuffle(d: Deck, s: Shuffler) -> Deck:
    s.deal(d, [6])
    s.fallow(d, 5, 0.1, 0.1)
    s.over_hand(d, [4], 0.1)
    s.fallow(d, 5, 0.1, 0.1)
    s.over_hand(d, [4], 0.1)
    s.cut(d, 3, 0.1)
    return d

position_prob_map, neighbor_prob_map, position_badness, neighbor_badness, total_position_badness, total_neighbor_badness\
    = evaluate(shuffle, 60)

total_position_badness = 0.21536666666666665 total_neighbor_badness = 0.21140000000000003

basic example 2

  1. ヒンドゥーシャッフル(5回シャカシャカ、4回シャカシャカ、3回シャカシャカ、・・・と21回行う)
from tcgshuffle import Deck, Shuffler, evaluate
def shuffle(d: Deck, s: Shuffler):
    s.hindu(d, [5, 4, 3, 4, 5, 4, 3, 4, 5, 4, 3, 4, 5, 4, 3, 4, 5, 4, 3, 4, 5], 0.4)
    return d
position_prob_map, neighbor_prob_map, position_badness, neighbor_badness, total_position_badness, total_neighbor_badness\
    = evaluate(shuffle, 60)

total_position_badness = 0.4182666666666666 total_neighbor_badness = 13.671499999999998

advanced example 1

  1. 2束に分ける
  2. それぞれの束をファローシャッフル(8回連続)
  3. 2束を合わせる(上に載せるだけ)
from tcgshuffle import Deck, Shuffler, evaluate
def shuffle(d: Deck, s: Shuffler):
    ds = s.split(d, 2, 0.1)
    s.super_fallow(ds, 8, 0.1, 0.1)
    d = s.merge(ds)
    return d
position_prob_map, neighbor_prob_map, position_badness, neighbor_badness, total_position_badness, total_neighbor_badness\
    = evaluate(shuffle, 60)

total_position_badness = 1.2804000000000002 total_neighbor_badness = 1.3671999999999995

advanced example 2

  1. ディールシャッフル(6つの束)
  2. 以下を3回繰り返す
    1. 束を2つに分ける(元の束 -> [A, B])
    2. 各束をさらに3つに分ける(A -> [A1, A2, A3], B -> [B1, B2, B3])
    3. A1とB1、A2とB2、A3とB3をそれぞれ合わせる
    4. A1+B1、A2+B2、A3+B3にそれぞれ、ファローシャッフル(3回連続)
    5. A1+B1、A2+B2、A3+B3を合わせる
    6. ヒンドゥーシャッフル(4回シャカシャカする作業を3回実施)
from tcgshuffle import Deck, Shuffler, evaluate
def shuffle(d: Deck, s: Shuffler):
    s.deal(d, [6])
    for i in range(3):
        sp2 = s.split(d, 2)
        sp6 = s.super_split(sp2, 3)
        pile1 = s.merge([sp6[0], sp6[3]])
        pile2 = s.merge([sp6[1], sp6[4]])
        pile3 = s.merge([sp6[2], sp6[5]])
        s.fallow(pile1, 3, 0.1, 0.1)
        s.fallow(pile2, 3, 0.1, 0.1)
        s.fallow(pile3, 3, 0.1, 0.1)
        d = s.merge([pile1, pile2, pile3])
        s.hindu(d, [4, 4, 4], 0.1)
    return d
position_prob_map, neighbor_prob_map, position_badness, neighbor_badness, total_position_badness, total_neighbor_badness\
    = evaluate(shuffle, 60)

total_position_badness = 0.23553333333333332 total_neighbor_badness = 0.2083

Metadata

Release files for tcgshuffle 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tcgshuffle 0.1.1
File Size Uploaded
tcgshuffle-0.1.1.tar.gz 5.5 kB Details

Release files / tcgshuffle-0.1.1.tar.gz

Download URL tcgshuffle-0.1.1.tar.gz
Size 5.5 kB
Tags Source
SHA-256 checksum
How to use checksums
5266c30c46602d8d0f5423bd909b5bea88961061b74ea2f0d35698bbc006b220
BLAKE2b-256 checksum
How to use checksums
e5bf2a4248afc8dd3fa3c16fd58133b0776bf688b94469e241e76f287aef5c9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.3

Release history Release notifications | RSS feed

This release

0.1.1 This release

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page