"更新" Python中的RNG

时间:2016-03-16 23:02:27

标签: numpy random

我必须对初始数组0和1的几组部分随机副本进行迭代操作。

我希望这些副本不同,当然也是不同的。

现在我使用这段代码(我省略了一些不应该干扰问题的部分):

def randomizer(b) :
"""randomizes a fraction 'rate' (global variable) of b"""

    c = np.copy(b)
    num_elem = len(c)
    idx = np.random.choice(range(num_elem), int(num_elem*rate), replace=False)
    c[idx] = f(c[idx])
    return c

def randomizePatterns(pattern, randomizer) :
"""Return nbTrials partially randomized copies of the given input pattern"""
    outputs = np.tile(pattern,(nbTrials,1))   
    for line in xrange(nbTrials) :       
        outputs[line] = randomizer(outputs[line,:])   
    return outputs

def test(pattern,randomizer) :
    randomPatterns = randomizePatterns(pattern, randomizer)
    """test the dynamics of a neural network with a fixed but initially random 
    connection scheme, and returns a boolean corresponding to if 
    the original pattern that was randomized is retrieved from at least
     90% of the randomized patterns"""
    return boolean 

def metaTest(pattern):       
    successNumber = 0   

    for plop in xrange(10):                 
        if test(pattern, randomizer) :           
            successNumber += 1
    return successNumber

要测试的另一个输入是[0,4]中的浮点数的随机矩阵,我可视化并具有预期的行为。 当我运行metaTest时,我总是得到0或10,而不是中间值。 鉴于测试的性质,我期望得到大约5的结果。我得到大约一半输入的每个结果。

更准确地说,在每次增加plop之后打印随机模式,我得到相同的东西十次,我希望改变。

0 个答案:

没有答案