2016-03-23 9 views
0

私は現在プロジェクトを行っていますが、私のコードではツリーを取得しようとしています。山々。無作為に産卵された最初の樹木や山の周りに集団で産卵することはできますが、無作為に生成された1つの点の周りに集まって木や山を集める方法はわかりません。どんな助け?グループの最初のオブジェクトがランダムに生成されたときに、グループ内のオブジェクトを生成するPython

grid = [] 
def draw_board(): 
    row = 0 
    for i in range(0,625): 
     if grid[i] == 1: 
      print("..."), 
     elif grid[i] == 2: 
      print("..."), 
     elif grid[i] == 3: 
      print(".*."), 
     elif grid[i] == 4: 
      print(".^."), 
     elif grid[i] == 5: 
      print("[T]"), 
     else: 
      print("ERR"), 
     row = row + 1 
     if row == 25: 
      print ("\n") 
      row = 0 
    return 
+0

質問はありません。お願いします。 –

+0

は良い質問に言い換えられました –

答えて

0

あなたにはさまざまな方法があります。

まず、グループを直接シミュレートするだけです。つまり、グリッド上の範囲を選択し、特定の図形で入力します。

def generate_grid(size): 
    grid = [0] * size 
    right = 0 
    while right < size: 
     left = right 
     repeat = min(random.randint(1, 5), size - right) # * 
     right = left + repeat 
     grid[left:right] = [random.choice(figures)] * repeat 
    return grid 

注グループのサイズは、例えば、均一に分布されるように、あなたは任意の便利なディストリビューションを使用することができない必要があることPoisson

第2に、Markov Chainを使用できます。この場合、グループの長さは暗黙のうちにGeometric distributionに従います。

def transition_matrix(A): 
    """Ensures that each row of transition matrix sums to 1.""" 
    copy = [] 
    for i, row in enumerate(A): 
     total = sum(row) 
     copy.append([item/total for item in row]) 
    return copy 


def generate_grid(size): 
    # Transition matrix ``A`` defines the probability of 
    # changing from figure i to figure j for each pair 
    # of figures i and j. The grouping effect can be 
    # obtained by setting diagonal entries A[i][i] to 
    # larger values. 
    # 
    # You need to specify this manually. 
    A = transition_matrix([[5, 1], 
          [1, 5]]) # Assuming 2 figures. 

    grid = [random.choice(figures)] 
    for i in range(1, size): 
     current = grid[-1] 
     next = choice(figures, A[current]) 
     grid.append(next) 
    return grid 

choice機能がthis StackOverflowの答えで説明されています。ここでは、コードです。

関連する問題