我如何防止我的循环重复我的随机值?
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=]
所以我正在学习如何处理概率以及如何在 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=]