matlab和python中随机数生成的差异

问题描述 投票:0回答:1

我是python的新手。我正在尝试实现一种遗传算法,该算法先前已在MatLab中实现。我需要为我的初始种群创建几个染色体(个体)。在MatLab中,我曾经使用rand函数来执行此操作,并且它给了我很多独特的(或至少足够不同的)初始填充。但是在python中,我尝试了random的不同方法,但是在50个人中,我只有3-4条独特的染色体。这是我在__main__.py中的python代码:

for i in range(pop_size):
        popSpace.append(Chromosom(G=mG,M=mM))
        sum_Q+=popSpace[i].Q

还有我的Chromosom类:

class Chromosom:   
    def __init__(self,G,M):
            self.Q = 0
            self.V = []
            self.Chr = []
            self.M= M
            self.G= G
            self.randomChromosom() 
            self.updateQ_Qs() 

    def randomChromosom(self):
        for m in range(len(self.M)):
            if (random.random()< 0.5):
                self.Chr[m] = 1
            else:
                self.Chr[m] = 0

我也尝试获取随机位,但结果仍然相同。例如,我使用print(str(main.mRand.getrandbits(6))在控制台中查看结果,并意识到数字重复过多。有没有一种方法可以创建更多唯一的随机数?在MatLab中,具有rand功能的相同代码运行良好(当然很慢)。拥有如此接近的初始种群会导致后续步骤的结果不佳(还要指出,随机性问题也会导致类似的突变)]

python matlab genetic-algorithm evolutionary-algorithm
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.