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

matlab与python中随机数生成的差异,python,matlab,genetic-algorithm,evolutionary-algorithm,Python,Matlab,Genetic Algorithm,Evolutionary Algorithm,我是python的新手。我正在尝试实现一个遗传算法,我以前在MatLab中实现过。我需要为我的初始群体创建几个染色体(个体)。在MatLab中,我用一个rand函数来实现这一点,它给了我很多独特的(或至少足够不同的)初始填充。但在python中,我尝试了不同的随机方法,但在50个个体中,我只有3到4条独特的染色体。这是我在\uuuu main\uuuu.py中的python代码: for i in range(pop_size): popSpace.append(Chromoso

我是python的新手。我正在尝试实现一个遗传算法,我以前在MatLab中实现过。我需要为我的初始群体创建几个染色体(个体)。在MatLab中,我用一个
rand
函数来实现这一点,它给了我很多独特的(或至少足够不同的)初始填充。但在python中,我尝试了不同的随机方法,但在50个个体中,我只有3到4条独特的染色体。这是我在
\uuuu main\uuuu.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 = [0]*len(self.M)
            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
类染色体:
定义初始值(self,G,M):
self.Q=0
self.V=[]
self.Chr=[0]*len(self.M)
self.M=M
self.G=G
self.randomChromosom()
self.updateQ_Qs()
def随机染色体(自身):
对于范围内的m(len(self.m)):
如果(random.random()<0.5):
self.Chr[m]=1
其他:
self.Chr[m]=0

我也尝试过获取随机位,但结果仍然是一样的。例如,我使用
print(str(main.mRand.getrandbits(6))
查看控制台中的结果,发现重复的数字太多了。有没有方法创建更独特的随机数?在MatLab中,使用
rand
函数的相同代码运行良好(当然速度非常慢).如此接近的初始群体在接下来的步骤中会导致糟糕的结果(我还应该提到,随机性问题也会导致类似的突变)。我的问题是有这么多相似的染色体。例如,我有几个
01111001
s,考虑到它们的发生概率,这很奇怪。

a“更唯一”的随机数就不再是随机数了。你能不能定义函数
updateQ_Qs()
,什么是
M
,什么是
G
?python也不像matlab那样工作,如果
Chr[M]
是空的,因为
Chr[M]
不存在。此代码应返回一个错误。请提供一个工作示例并给出预期结果。
updateQ_Qs()
是我的适应度函数,它为每个染色体返回一个浮点值。表示“更唯一”“我想提到的是,例如,我有几条染色体的基因顺序很奇怪(我编辑了代码)。50个序列中至少有两个相同的序列(长度为8)的概率是
1-prod(1-[(0:49)/2^8])
=99.41%,所以这并不奇怪8位→ 0÷255Random.random和random中的其他函数对于这些问题来说已经足够好了,但是您在这里发布的代码在尝试访问
self.M
之前会引发
AttributeError
,然后在
\uuuu init\uuuuuu
中对其进行分类。否则,该代码在Python中非常灵活-它是l最终,同一个对象在多个实例中保存染色体数据。