如何在运行 M 次的循环中随机执行 N 次任务?

How to execute a task randomly N times, within a loop that runs M times?

要求:我需要在一个500回合的游戏中执行T,N次任务。

我有一个循环运行某些与游戏相关的任务 500 次。在此,我想随机执行任务 T N 次。此外,N<500.

如何实现这一目标?

我知道如何在一个循环中执行 T,N 次。但是,我想在游戏的500轮内随机执行N次。

有什么问题吗?只需在循环内实现随机化:

# Very simple example

from random import randint
for x in range(500):
    for y in range(randint(0,500)):
        for z in range(randint(0,y)):
            # Do something

在你的 500 循环中。不要忘记执行 import random

for i in range (random.randrange(500)):
    your T task

我假设您当然希望在 500 轮中正确分配 T 的 N 次执行,并且每次执行都不同。

如果您对 N 的近似值没问题,就地解决方案是每轮任务的概率为 N/500 到 运行。

import random

roundNb = 500
N = 10

for i in range(roundNb):
  if random.random() < N / roundNb:
    T()

如果让这个任务恰好执行 N 次对你来说很重要,那么最好生成 N 个不同的 < 500 随机数,并用它们来确定你的任务是否应该在这一轮执行。

import random

roundNb = 500
N = 10

# random.sample takes N elements of range(roundNb), so N valid roundNumbers
# Convert it to a set so `i in doTaskOn` runs in constant time
doTaskOn = set(random.sample(range(roundNb), N))

for i in range(roundNb):
  if i in doTaskOn:
    T()