如何在运行 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()
要求:我需要在一个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()