我如何防止我的循环重复我的随机值?

How do i keep my loop from repeating my random values?

所以我正在学习如何处理概率以及如何在 Python 中绘制它们。我遇到了一个问题,我需要找到 2 个骰子之和 > 7 或奇数的概率。我知道结果大约是 75%,但我在将其转换为 Python 时遇到了问题。我解决问题的代码是这样的:

import random
import numpy as np
dice = [1,2,3,4,5,6]
value = 0
simulation_number = len(dice)**2
percentage = []
for i in range(0,simulation_number):
    dice1 = random.choice(dice)
    dice2 = random.choice(dice)
    random_match = dice1,dice2
    
    if (sum(random_match))>7 or (sum(random_match)%2) != 0:
        value += 1
percentage.append(np.round((value/simulation_number)*100,2))
print(percentage,"%")

它工作得很好,但每次我 运行 代码都会给出不同的解决方案,因为循环会重复 random_match 的结果。如何在代码中包含不重复 random_match 值的条件?

我猜你正在寻找 random.sample:

import random
dice = [1,2,3,4,5,6]
dice1, dice2 = random.sample(dice, 2)

生成从 1 到 6 的随机值将不起作用。假设您要抛硬币 10 次。理论上你应该得到 5 个正面和 5 个反面。但由于抽样误差,这在现实生活中不会发生。当您生成随机值时,总会有一些抽样误差。

import random
import numpy as np
dice = [1,2,3,4,5,6]
value = 0
simulation_number = len(dice)**2
for i in range(len(dice)):
    for j in range(len(dice)):
        dice1 = dice[i]
        dice2 = dice[j]
        x = dice1+dice2
        if x>7 or x%2== 1:
            value += 1
percentage = np.round((value/simulation_number)*100,2)
print(f'{percentage} %')

这很有效,因为您只需要每个案例一次。使用随机可能会一次又一次地出现相同的情况[​​=11=]