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

jas*_*cks 0 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
Run Code Online (Sandbox Code Playgroud)

print告诉我它总是返回0.如果我random.random()在python提示符下测试,我得到一个随机值.我不明白是什么导致了这种差异

Mar*_*ers 7

您将随机值格式化为整数:

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)