【问题标题】:Create a "random" number between range without any module except time在范围之间创建一个“随机”数字,除了时间之外没有任何模块
【发布时间】:2016-07-11 09:19:46
【问题描述】:

我想为自己创建一个 2 条边之间整数的“随机”数生成器。此外,我想创建相同的东西,但在两条边之间使用浮点数(如 random.random 但在我想要的范围内)。

时间戳我需要时间。

我目前正在学习随机数的生成方式(我使用这种方式,以时间戳为开始):

a = int
b = int
m = int
number = time.mktime (time.localtime ())

for x in range (0, m):
    number = (a*number + c) % m
    print (number)

(int可以是任意整数,有多种优化返回值的方法(这里长解释))

这是我学会“随机”整数的方法。我目前正在寻找一种使用这种方式解决上述问题的方法(如果可能的话)。有什么想法吗?

【问题讨论】:

  • 使用两个 int A 和 B 然后你可以做 A + float("0."+ str(B)) (好吧它很脏但就像一个带有日期的随机生成器......)跨度>

标签: python random time range generator


【解决方案1】:

鉴于您总是以m 为模,m 是结果的最大值。此外,在minmax 之间找到一个随机数与在0 和max - min 之间找到一个随机数并在其中添加min 相同。

def rand_range(min, max, a, b, n):
    m = max - min
    number = time.mktime (time.localtime ())

    for x in range (0, m):
        number = (a*number + b) % m

    return number + min

要从中得到一个浮点数,可以使用上面的函数来定义:

def rand_range_float(min, max, density, a, b, n):
    rand_int = rand_range(0, density, a, b, n)
    return min + (float(rand_int)/density)*(max-min)

在此函数中,density 指定您想要多少个可能的浮点值。例如,如果您调用rand_range_float(0, 1, 2, a, b, c),该函数可能会返回 2 个可能的值; 0.0 或 0.5

【讨论】:

  • 非常感谢我所需要的!
  • 这两个函数中的n变量有什么用呢?
  • 哦,我稍微误读了你的问题,我只是为循环添加了你的代码。我以为有一个变量n 来定义迭代次数,但你只是在那里使用m,所以你可以省略n 参数。
猜你喜欢
  • 1970-01-01
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
相关资源
最近更新 更多