質問
前の質問で変更したコードをさらに変更して、各セルが、確率つきのある規則に合わせて動くようなプログラムを作成しようとしました。
※コードに関しては、描画とロジックを混在した状態でのものを変更して投稿しております。すみません。
下のコードについて、下のコードでr_i=random.random()としたのですが、いざコードを書いてプログラムを実行すると、それぞれのセルが同じように動いていることから、同じ乱数が代入されているのではないかと思いました。
それぞれのセルにおいて乱数を定義してプログラムを実行したいのですが、どうすれば乱数を複数定義することができますか?
Python3
1from tkinter import * 2import time 3import tkinter as tk 4import random 5import math 6#配列の宣言 7def array2(N1,N2): 8 return [[0 for j in range(N2)]for k in range(N1)] 9def array3(N1,N2,N3): 10 return [array2(N2,N3)for k in range(N1)] 11#セルの初期設定 12def initdt(): 13 A=array3(1000,31,31) 14 for i in range(1,31): 15 A[0][i][15]=i % 4 16 return A 17#セルオートマトンの実行 18def execCell(A,i1): 19 i2 = 1 + i1 20 for i in range(1,30): 21 r_i=random.random() 22 for i in range(1,30): 23 if (r_i <= 0.50): 24 A[i2][i][15] = (A[i1][i][15] + 1) % 4 25 if (r_i > 0.50): 26 A[i2][i][15] = (A[i1][i][15] - 1) % 4 27#セルの位置決めとIDの設定 28def drawCell(canvas,A,k): 29 x2=0 30 CID=array2(31,31) 31 for i in range(1,30): 32 x1=x2 33 x2=x1+10 34 y2=0 35 for j in range(1,30): 36 y1=y2 37 y2=y1+10 38 CID[i][j]=canvas.create_rectangle(x1,y1,x2,y2,fill='black') 39 return CID 40#セルの色設定 41def modifyCell(canvas,A,k,CID): 42 CL=['black','#ff0000','#00FF00','#0000ff'] 43 for i in range(1,30): 44 for j in range(1,30): 45 canvas.itemconfig(CID[i][j],fill=CL[A[k][i][j]]) 46 canvas.itemconfig(CID[i][j],outline=CL[A[k][i][j]]) 47#Tk初期設定 48def initTk(): 49 tk=Tk(); tk.title("2D Cell Automaton"); tk.resizable(0,0) 50 return tk 51#画面キャプチャ用 52def leftMouseDown(event): 53 global canvas, A,k,CID 54 modifyCell(canvas,A,k,CID) 55 execCell(A,k) 56#実行メイン 57A=initdt() 58root=initTk() 59canvas=Canvas(root,width=290,height=290,highlightthickness=0) 60canvas.pack() 61CID=drawCell(canvas,A,0) 62k=0 63 64def animate(): 65 global k 66 modifyCell(canvas, A, k, CID) 67 execCell(A,k) 68 k = 1 + k 69 root.after(200, animate) 70 71root.after(200, animate) 72root.mainloop()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/04 16:10