均匀随机抽样

时间:2017-10-19 04:46:15

标签: python random

我的问题如下,我面前有4张扑克牌面朝下。有国王,女王,杰克和王牌。我挑了一张卡片,看着它,然后把它面朝下放在我面前。我试图模拟挑选3张卡1000次(你可以多次选择同一张卡),即3个样本中的一个可以是Jack,Jack和King。我试图在这里做到这一点:

import random

cards=["King", "Queen", "Jack", "Ace"]

for i in range(1000):
    print([random.sample(cards, 3)])

所有这一切都打印出1000次迭代,挑选3张牌,但它从未选择相同的牌两次,这应该是。

我想做的是计算我挑选3张独特卡片的次数,然后计算这样做的概率。然后我想计算每次试用的不同卡片的平均数量。我知道这有助于为列表添加值,但我不确定如何去做。为格式化道歉,我没有经验。

3 个答案:

答案 0 :(得分:1)

这应该提供所需的输出

    compile 'com.google.firebase:firebase-auth:11.4.2'
    compile 'com.firebaseui:firebase-ui:3.1.0'
    compile 'com.firebaseui:firebase-ui-auth:3.1.0'

答案 1 :(得分:0)

这看起来像你在看什么吗?

from random import sample, choice
from itertools import groupby
cards=["King", "Queen", "Jack", "Ace"]
unique = 0
for i in range(1000):
    #sample will return unique
    d = sample(cards, 3)
    if len(list(groupby(d))) == 3:
        unique += 1
print(unique)

答案 2 :(得分:0)

蒙特卡洛可能令人困惑 - 至少对我而言。我的第一步是尝试生成三张卡样本的代码。我将N设置为10。

for n in range(N):
    sample = [random.choice(cards) for _ in range(3)]
    print (sample)

输出就是这个。显然,这并不能保证我是成功的,但似乎代码可以产生所有可能性。如果我有任何真正的担忧,我可以尝试增加N

['Jack', 'Jack', 'King']
['Jack', 'Ace', 'Ace']
['Ace', 'Ace', 'Jack']
['Ace', 'Queen', 'Ace']
['Ace', 'King', 'King']
['King', 'Jack', 'King']
['Queen', 'King', 'Ace']
['Queen', 'Queen', 'Queen']
['King', 'Jack', 'Ace']
['Jack', 'Jack', 'King']

你想数独特。通过将samples转换为set并将len转换为unique_count = 0 for n in range(N): sample = [random.choice(cards) for _ in range(3)] unique_count += 1 if len(set(sample))==1 else 0 print(unique_count) ,可以最方便地完成此操作。计算平均值很容易。

import random

cards=["King", "Queen", "Jack", "Ace"]

N = 100000

unique_count = 0
card_counts = {_: 0 for _ in cards}
for n in range(N):
    sample = [random.choice(cards) for _ in range(3)]
    unique_count += 1 if len(set(sample))==1 else 0
    for s in sample:
        card_counts[s]+=1

print(unique_count)
total = 0
for s in cards:
    total += card_counts[s]
    print (s, card_counts[s])
print (total)

字典不是一个值得记住的好地方。在循环外部初始化它,然后递增条目。

        string[][,] PatternTables;
        Parallel.For(0, PatternTables.Length,
            index =>
            {
                PatternTables[index] = BOMAnalysis(Pattern, PatternMatch, BOMs, HeaderIndex);
            });

当我进行实验时,我经常尝试越来越大的N值,希望看到收敛。