给出以下百分比:65%,30%,4%,1%

时间:2016-06-22 10:04:01

标签: python

我被要求按照配对逻辑工作,我需要给我的代码提供以下百分比(65%,30%,4%,1%),我只想检查它是否是最好的实施,或者如果你们有任何其他想法:

random_session = await create_random_session(
    connection, 'group', session_size=4, random_value = "case1", "case2", "case3", "case4",
        )
    for for random_value in random_session:
                if random.randint(0, 100) < 65:
                    random_value = "case1"
                        continue
            else:
                random.randint(0, 100) < 30:
                    random_value = "case2"
                        continue
            else:
                random.randint(0, 100) < 4:
                    random_value = "case3"
                        continue
            else:
                random.randint(0, 100) < 1:
                    random_value = "case4"
                        continue

2 个答案:

答案 0 :(得分:0)

由于您为每种情况创建了新的随机int,因此可能会发生其中没有一个是真的,然后随机值将是不可取的。只创建一个随机整数,然后比较所有情况以防止这种情况。

此外,对循环变量的赋值也不会像这样工作。

x=[0,0,0,0]
for i in x:
    i=3
    print x

给你:

[0, 0, 0, 0]
[0, 0, 0, 0]
[0, 0, 0, 0]
[0, 0, 0, 0]

x=[0,0,0,0,0]
for i in range(len(x)):
    x[i]=3
    print x

给你

[3, 0, 0, 0]
[3, 3, 0, 0]
[3, 3, 3, 0]
[3, 3, 3, 3]

我还认为您要使用continue代替break,以便浏览random_session

中的所有内容

答案 1 :(得分:0)

您的实施不正确。您需要进行一次采样,然后测试每个标准(即65%,30%,4%或1%)。

例如,假设您的第一个测试产生值为1的随机变量。第一个条件将失败。现在假设第二个测试产生随机变量1.再次,你的第二个条件将失败。类似地,你的第三个条件将失败为1的随机变量。最后,如果满足上述条件并且你的第四个测试产生随机变量1,那么你的条件将通过并返回case4。换句话说,如所写的,返回案例4,需要(等效地):

random.randint(0,100) < 1 and random.randint(0,100) < 1 and random.randint(0,100) < 1 and random.ranint(0,100) < 1

案例2和案例3存在类似的问题