思路很简单,不需要想得复杂:
建一个空列表,在里面放入N个1,100-N个0,N%就是指定的概率。
然后用random.choice随机选取一个元素,如果是1就执行指定函数,如果是0就pass。
import random
def random_run(probability, func, *args):
"""以probability%的概率执行func(*args)"""
list = []
for i in range(probability):
list.append(1)#list中放入probability个1
for x in range(100 - probability):
list.append(0)#剩下的位置放入0
a = random.choice(list)#随机抽取一个
if a == 0:
pass
if a == 1:
func(*args)
def print_sth(name):
print(f'{name}你中奖了!')
if __name__ == '__main__':
random_run(30, print_sth, 'jack')#以30%的概率执行print_sth('jack')