2016-03-23 12 views
0

Şu anda bir proje yapıyorum ve sahip olduğum kodda, ağaç dikmeye çalışıyorum. ve dağlar. Bununla birlikte, rastlantısal olarak ortaya çıkarılan ilk ağaç veya dağın etrafındaki gruplarda yumurtlamak için, rastgele oluşturulmuş tek bir nokta etrafındaki gruplarda ağaçların ve dağların nasıl üretileceğini anlayamıyorum. Herhangi bir yardım?Grubun ilk nesnesi rasgele oluşturulduğunda gruplar halinde yumurtlama nesneleri 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

Hiç soru yok. Lütfen bir tane isteyin. –

+0

daha iyi bir soru olarak yeniden yorumlandı –

cevap

0

Yapabileceğiniz birkaç yol var. İlk olarak, grupları doğrudan simüle edebilir, yani ızgara üzerinde bir aralık seçebilir ve belirli bir rakamla doldurabilirsiniz.

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 

Not bu grup büyüklüğü düzgün olarak dağıtılmak zorunda değildir, herhangi bir uygun dağıtımını kullanabilir, örneğin, Poisson.

İkinci olarak, Markov Chain'u kullanabilirsiniz. Bu durumda grup uzunlukları, Geometric distribution'u dolaylı olarak takip edecektir.

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 fonksiyon this StackOverflow cevap açıklanmıştır: İşte kod.

İlgili konular