我有这个功能:
def get_starting_centroids(centroids,size,num):
for i in range(0,num):
temp = []
for j in range(0,size):
random.seed(time.clock())
g = random.random()
g = g*.85 + .15
print "random: %i" %g
temp.append(g)
centroids.append(temp)
return centroids
Run Code Online (Sandbox Code Playgroud)
print告诉我它总是返回0.如果我random.random()在python提示符下测试,我得到一个随机值.我不明白是什么导致了这种差异
您将随机值格式化为整数:
print "random: %i" %g
Run Code Online (Sandbox Code Playgroud)
这种地板的价值,这是低于1 总,所以你总是结了0.
打印浮点值:
print "random: %.5f" % g
Run Code Online (Sandbox Code Playgroud)
你会看到那里有实际值,只有0.15到1之间.
你不应该每轮播种随机发生器; 如果你需要种子,只需在循环外进行一次:
random.seed() # seeds to the current system time by default
for j in range(0,size):
g = random.random()
g = g*.85 + .15
print "random: %.5f" % g
temp.append(g)
Run Code Online (Sandbox Code Playgroud)