我有这个功能:
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
print告诉我它总是返回0.如果我在python提示符中测试random.random()
,我会得到一个随机值。我不明白是什么导致了这种差异
答案 0 :(得分:7)
您正在将随机值格式化为整数:
print "random: %i" %g
此楼层该值低于1 总是,因此您总是以0
结束。
打印浮点值:
print "random: %.5f" % g
并且您会看到其中存在实际值,仅在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)
答案 1 :(得分:1)
您的问题在于格式化。
使用
print "random: %f" %g
您将格式化为十进制,截断g,这是一个浮点数。 但是,应该正确地将g添加到临时数组中。