3

そのため、単一の遺伝子を持つ理論上の生物のランダムな同等に適合する対立遺伝子の世代を生成するプログラムを作成する必要があります。

変異した対立遺伝子 2 を 1 つ含むリストから始めて、次の世代の対立遺伝子を 3 つ選択し、それらを次の世代のリストに追加します。

import random

p = [1,1,1,2]

from random import choice
n=len(p)-1

for i an range(n):
    p.append(choice(p))

問題は、選択されなかった対立遺伝子が除去されないことです。選択されていない対立遺伝子がリストから削除されるように、このプログラムをどのように適応させることができますか?

ありがとう

- 編集

プログラムの出力は次のようになります

[1,1,1,2,1,2,1]

これは、2 つの異なる対立遺伝子を持つ 7 つの生物の集団を表します。選択した 3 つの対立遺伝子の二重対立遺伝子があるため、これは第 2 世代を表します。これは、3 つの選択された対立遺伝子の 2 つの子孫をシミュレートしました。しかし、選択されなかった対立遺伝子 (この場合は 1) は、この世代には存在しないはずです。だから私が知りたいのは、ここのリストからそれを削除する方法です

注意してください。少し冗長で申し訳ありません

4

2 に答える 2

1

あなたの質問を完全に理解しているかどうかはわかりませんが、解決策の試みは次のとおりです。

first_gen = [1,1,1,2]
second_gen = first_gen + random.sample(first_gen, len(first_gen)-1)

それはまったく役に立ちますか?

于 2012-10-07T13:03:49.723 に答える
1
import random 
n = 4 

A = [i for i in xrange(n)]
B = [1,1,1,2]
NextGeneration = [] 
for i in xrange(n-1):
    last = n - i - 1
    actualChoice =  random.randint(0,last)   
    NextGeneration.append(B[A[actualChoice]])  
    auxSwap = actualChoice 
    A[actualChoice] = A[last] 
于 2012-10-07T12:55:27.117 に答える