我用python编写了一个函数,该函数生成以下格式的词典:
{A:20,T:20,G:30,C:30} 我希望每个值的生成范围为GC 40%-60%
def makeDict(gcRange, min):
maxC = gcRange[1]-min
probC = random.choice(np.arange(min, maxC, 2))
gc = [gcRange[0]-probC, gcRange[1]-probC]
probG = random.choice(np.arange(gc[0], gc[1], 2))
at = 100 - probC - probG
probA = at/2
probT = at/2
return({"A":probA, "T":probT, "G":probG, "C":probC})
d=[]
for i in range(1,1000):
d.append(makeDict([40,60],10))
我知道random.choise发生时有替换,random.sample发生时没有替换。我希望它与替换,因为我将生成1000本字典。 但是,当我在循环中生成1000个字典时,我希望这些随机选择的值有一个统一的分布。 这已经在random.choice函数中发生了,还是需要设置权重?如果是,如何进行?在函数中还是在for循环中? 还有,为什么如果我打印(len(d))它会显示999而不是1000? 此外,有时我会得到负值。为什么
是的,有时候,你可以得到一个负值。这很正常
相关问题 更多 >
编程相关推荐