【问题标题】:Generating a random number from a random number从随机数生成随机数
【发布时间】:2020-05-10 05:28:30
【问题描述】:

我正在尝试编写一个程序,该程序从 Perlin 噪声生成的随机数中生成一个随机数。如果你问我为什么要尝试向随机数生成器添加更多随机性,看看它是如何工作的。

无论如何,我的问题来自 Perlin 噪声随机数,我总是得到 12 位随机数,例如:124592051214、431268750000、420799999999、613979257812...

问题是我希望这个函数可以像普通的 python Random 函数一样使用。你给边界(a,b),你会在这些边界中得到一个随机数。

那么,如何转换 12 位数字以匹配给定的边框?提前致谢

例如:

num = 124592051214

perlinRand(50,100)
62

【问题讨论】:

  • 你可以随机选择一些数字。
  • 也许modulo operator 会有所帮助。
  • @ZabirAlNazi 那么你的意思是我可以从 12 位数字中随机选择一些数字吗?会不会太低效了?因为它需要尝试随机数,直到它在想要的范围内。但这也许可行。
  • @dlask 模运算符闪过我的脑海,但我想不出用模运算符解决这个问题的方法。
  • 简化0N-1(含)之间随机数的任务。然后模运算符立即进行工作。其余的只是微调并添加了一些内容。

标签: python python-3.x


【解决方案1】:

你可以这样做

perlin_noise % (higher-lower) + lower

其中“higher”是您想要的随机数的上限,“lower”是下限,perlin_noise 是您生成的数字

def perlinRand(lower, higher):
    perlin_noise = get_perlin_noise_random_number()
    return perlin_noise % (higher-lower) + lower

perlinRand(50, 100)

【讨论】:

  • 这绝对有效。我没想到解决方案会这么简单。我想的太复杂了。非常感谢!
  • @YusufKerem 仅当输入范围远大于输出范围时,建议的方法才能正确工作。无论如何,start with simplest solutions 总是合理的。
  • @dlask 暂时你是对的,对于高于 12 位的数字,我不需要它。将来会改进。无论如何,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-03
  • 1970-01-01
  • 2013-11-15
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多