我想创建一个"随机" 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可以是任何整数。有多种方法可以优化返回值(详见此处解释))
这是我学会了随机使用"整数。我目前正在寻找一种方法来解决上述问题(如果可能的话)。有什么想法吗?
答案 0 :(得分:1)
鉴于您始终以模m
为模,m
是结果的最大值。此外,在min
和max
之间找到一个随机数与在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