Example #1
0
def random(n, p):
    a = stdarray.create2D(n, n, False)
    for i in range(n):
        for j in range(n):
            a[i][j] = stdrandom.bernoulli(p)

    return a
Example #2
0
def flow(isOpen):
    n = len(isOpen)
    isFull = stdarray.create2D(n, n, False)

    #以下为脚手架基础上,新增的部分
    for j in range(n):
        isFull[0][j] = isOpen[0][j]
    for i in range(1, n):
        for j in range(n):
            if isOpen[i - 1][j] and isOpen[i][j]:
                isFull[i][j] = True

    return isFull
Example #3
0
def generate_transition_matrix(weblist):
    print('enter generate_transition_matrix()')

    transition_matrix = stdarray.create2D(3, 3, 0)
    wbnamelist = [weblist[i].url for i in range(len(weblist))]
    print(wbnamelist)
    for wb in weblist:
        i = wbnamelist.index(wb.url)
        for link in wb.link:
            j = wbnamelist.index(link[0])
            transition_matrix[i][j] = link[1]

    print('return transition_matrix:', transition_matrix)
    return transition_matrix
Example #4
0
def lifegame(life):
    '''
    recursive return the adjacent part block

    :param x:
    :param y:
    :return:
    '''
    stddraw.clear()
    draw(life)
    stddraw.show(500)
    for line in life:
        print(line)

    life2 = stdarray.create2D(10, 10, 0)
    for x in range(10):
        for y in range(10):
            print('x is {0},y is {1}'.format(x, y))

            a = 0
            for i in range(x - 1, x + 2):
                # print('i is {0}'.format(i))
                for j in range(y - 1, y + 2):
                    # print('j is {0}'.format(j))
                    if i < 0 or i > 9 or j < 0 or j > 9:
                        pass
                    else:

                        a += life[i][j]
                        print(
                            'i is {0},j is {1},life[{0}][{1}] is {3},a is{2}'.
                            format(i, j, a, life[i][j]))

            if a == 0:
                print(x, y, 'no alive in 9')
                pass
            else:

                life2[x][y] = isalive(life, x, y)

    lifegame(life2)
Example #5
0
接受命令行参数 moves,从标准输入读取一个转换矩阵(浮点数),通过moves次向量-矩阵乘法计算,计算
一个随机冲浪者经过moves步跳转到达各页面的概率。
最后在标准输出中输出页面排名

命令行模式:
python3 tansition.py<tiny.txt|python3 markov.py 20
'''

from stdpackage import stdio,stdarray
import sys

moves = int(sys.argv[1])
n = stdio.readInt()
stdio.readInt()

p = stdarray.create2D(n,n,0.0)
for i in range(n):
    for j in range(n):
        p[i][j] = stdio.readFloat()

ranks = stdarray.create1D(n,0.0)

ranks[0] = 1.0
for i in range(moves):
    new_ranks = stdarray.create1D(n,0.0)
    for k in range(n):
        for j in range(n):
         new_ranks[j] += ranks[k]*p[k][j]
    ranks = new_ranks

for i in range(n):
Example #6
0
#计算输出转换矩阵,矩阵上第i行第j列的数字,代表从i页跳转到 j页的概率

from stdpackage import stdarray, stdio

n = stdio.readInt()

linkCounts = stdarray.create2D(n, n, 0)
outDegress = stdarray.create1D(n, 0)

while not stdio.isEmpty():
    i = stdio.readInt()

    j = stdio.readInt()
    outDegress[i] += 1
    linkCounts[i][j] += 1

stdio.writeln(str(n) + ' ' + str(n))

for i in range(n):
    for j in range(n):
        p = (0.8 * linkCounts[i][j] / outDegress[i]) + (0.2 / n)
        stdio.writef('%8.5f', p)
    stdio.writeln()
1.输入跳转总次数n
2. 从页面0开始
3. 随机生成概率 sp,根据sp跳转到下一个页面,对于被跳转到的页面计数
4。重复3,直到总次数耗尽
5。输出每个页面被跳转到的比例(次数/n)

'''

from stdpackage import stdio, stdarray, stddraw
import random
import sys

moves = int(sys.argv[1])
n = stdio.readInt()
stdio.readInt()
P = stdarray.create2D(n, n, 0.0)
P_accumulated = stdarray.create2D(n, n, 0.0)
SP = stdarray.create1D(n, 0.0)

for i in range(n):
    for j in range(n):
        P[i][j] = stdio.readFloat()
for i in range(n):
    for j in range(n):
        for h in range(j + 1):
            P_accumulated[i][j] += P[i][h]


def find_page(i, p):
    j = 0
    while j < n:
Example #8
0
def main(n):
    life = stdarray.create2D(10, 10, 0)
    stddraw.setXscale(-1, 10)
    stddraw.setYscale(-1, 10)
    life = initiate(life, n)
    lifegame(life)