簡體   English   中英

組合:如何計算為比賽結果而猜出的分數的所有可能組合

[英]Combinations : How to calculate all possible combinations of points awarded for match results guesses game

我本人和一群人“賭”哪支球隊將在不同的足球比賽結果中獲勝(不涉及金錢)。 有3種可能的積分獎勵給玩家。

points = [0, 3, 4]

因此,如果我說A隊將贏得1-0。

  • 如果A隊輸了,我就得不到積分。
  • 如果A隊獲勝,我得到3分。
  • 如果A隊以1-0獲勝,我將獲得額外的積分,總共可獲得4分。

因此,對於該特定下注,我可以獲得0、3或4分。 其他參與此投注的人也是如此。 所以我試圖獲得所有可能的結果組合。 對於兩個玩家,我希望能夠獲得這種輸出(例如兩個玩家的示例):

"Player 1"    0   0   0   3   3   3   4   4   4
"Player 2"    0   3   4   0   3   4   0   3   4

我曾經有一個使用VBA來計算這些可能結果的Excel文件,但是播放器的數量是固定的,因此該代碼不適用於添加或刪除播放器。

我正在嘗試創建一個函數,該函數可以針對不同(和動態)的玩家數量,使用結果的所有可能組合來計算和輸出某些數據結構。

我已經閱讀了幾個有關python中組合的問題(超過10個),但這些問題都沒有涵蓋此特定方案。 他們通常涵蓋使用itertools進行排列(不是這樣,因為我們每個人都可以得到相同的結果),多個組合(如果組合的數量超過可能結果的值,將不起作用(3)。)一些類似於我需要通過使用:

string_points = str(points[0])+str(points[1])+str(points[2])

for p in itertools.product(string_points, repeat=3):
    print(p)

結果是具有可能結果的字符串值的元組序列:

('0', '0')
('0', '3')
('0', '4')
('3', '0')
('3', '3')
('3', '4')
('4', '0')
('4', '3')
('4', '4')

但是作為字符串,我無法對其執行任何操作或計算統計信息...

有什么方法可以使用itertools進行這項工作嗎? 有人會建議完全不同的方法嗎? 我願意接受任何一種解決方案。 是否有任何數據結構可以將參與者的姓名納入可能的結果? 提前致謝...

無需首先將值轉換為字符串!

for p in itertools.product(points, repeat=2):

這將使您訂購一對整數。

具體來說,您想要的是n次積分列表及其自身的笛卡爾積 (其中n是玩家數)。 這就是帶有repeat關鍵字的itertools.product可以帶給您的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM