【问题标题】:Get a new randomized number in python在python中获取一个新的随机数
【发布时间】:2021-07-09 00:22:21
【问题描述】:

也许这是一个菜鸟问题,但我怎样才能在每次重复时获得一个新的随机数?

realport = random.randint(portstarts, portends)

liste = list(itertools.repeat('{}:{}:{}:{}'.format(hostname, realport, username, password), amount))

【问题讨论】:

  • “重复”是什么意思?重复是被描述为具有相同值的连续随机数,还是只是任意两个相等的随机数,而不管它们在序列中的位置如何?
  • 目前两个或多个相等的随机数,但我需要列表中连续的随机数:)
  • 您有什么理由需要itertools.repeat吗?因为根据定义,itertools.repeat 始终返回 same 对象(不是副本,不是新创建的对象,实际上与您作为第一个参数传递给 repeat 的对象完全相同)。
  • 其实我不需要itertools.repeat,但这是我想到的第一个解决方案,后来我尝试添加随机,所以是的,我可能需要一个新的解决方案

标签: python loops random itertools


【解决方案1】:

正如 ShadowRanger 所说,itertools.repeat 可能不是你想要的。

list comprehension”可能是表达您想要的更好的方式:

def getport():
    return random.randint(portstarts, portends)

liste = [
  '{}:{}:{}:{}'.format(hostname, getport(), username, password)
  for _ in range(amount)
]

如果您希望所有端口都是唯一的,那么您可以改用random.sample 来“不替换采样”:

liste = [
  '{}:{}:{}:{}'.format(hostname, port, username, password)
  for port in random.sample(range(portstarts, portends+1), amount)
]

看,例如How to incrementally sample without replacement? 在 Python 中无需替换即可进行采样的各种方式

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 2021-10-11
    • 2019-08-10
    • 1970-01-01
    相关资源
    最近更新 更多