python:函数中的random.random总是返回0?

时间:2014-12-04 18:39:05

标签: python random

我有这个功能:

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(),我会得到一个随机值。我不明白是什么导致了这种差异

2 个答案:

答案 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添加到临时数组中。