Ejemplo n.º 1
0
def doubletrial(f,n,length,trials):
    timelist = stdarray.create1D(length)
    timecount = stdarray.create1D(length)
    for i in range(length):
        timelist[i] = trialtime(f,n*(2**i),trials)

        print(n*(2**i),timelist[i],int(timelist[i]/timelist[0]))
        timecount[i] = int(timelist[i]/timelist[0])
    return timelist
Ejemplo n.º 2
0
def merge(hi, mid, lo, List):

    x = 0
    i = lo
    j = mid
    n = hi - lo
    aux = stdarray.create1D(n, 0)

    for k in range(n):

        if i == mid:
            aux[k] = List[j]
            j += 1
            #i == mid,意味着[lo,mid)的数字已经排完了,接下来就是依次将 j - hi的元素排进 aux;下面的操作都不会在进行。

        elif j == hi:
            aux[k] = List[i]
            i += 1
            # j == hi,意味着[mid,hi)的数字已经排完了,接下来就是依次将 i-mid的元素排进aux

        elif List[j] < List[i]:
            aux[k] = List[j]
            j += 1  #发现后半部分的元素小于前面,则排后半部分元素到当下位置。
        else:
            aux[k] = List[i]
            i += 1

    List[lo:hi] = aux[0:n]
Ejemplo n.º 3
0
def trialtime(f,n,trials):
    '''
    1. generate random list with length n
    2. start time
    3. sort f with list(n)
    4. end time

    :param f:
    :param n:
    :return: time
    '''

    List = stdarray.create1D(n,0)
    total = 0
    for i in range(len(List)):
        List[i] = random.randint(0,1000)

    for t in range(trials):
        watch =stopwatch()
        f(List)

        total +=watch.elapsedTime()
    averagetime = total/trials

    return averagetime
Ejemplo n.º 4
0
def main():

    n = int(sys.argv[1])

    for i in range(n):
        time1 = Watchstop()
        L = stdarray.create1D(i)

        print(time1.elapsedtime())
Ejemplo n.º 5
0
 def increaseTime(self, dt):
     # print('increasetime')
     n = len(self._bodies)
     f = stdarray.create1D(n, Vector([0, 0]))
     for i in range(n):
         for j in range(n):
             if i != j:
                 bodyi = self._bodies[i]
                 bodyj = self._bodies[j]
                 f[i] = f[i] + bodyi.forceFrom(bodyj)
     r_list = []
     for i in range(n):
         # print('r_list is:',r_list)
         self._bodies[i].move(f[i], dt, r_list)
         r_list.append(self._bodies[i].get_r())
Ejemplo n.º 6
0
    def __init__(self, n):

        self._balls = stdarray.create1D(n)
        self._min = -50
        self._max = 50
        stddraw.setYscale(self._min, self._max)
        stddraw.setXscale(self._min, self._max)
        for i in range(n):
            mass = random.randint(1, 10)
            radius = random.uniform(1, 2)
            velocity = Vector([random.randint(0, 3), random.randint(0, 3)])
            location = Vector([random.randint(0, 10), random.randint(5, 10)])
            print('generate location:', location)
            ball = Ball(mass, radius, velocity, location)
            self._balls[i] = ball
Ejemplo n.º 7
0
def dice(dice_1, dice_2, n):
    index = []

    for i in range(6):
        for j in range(6):
            if dice_1[i] + dice_2[j] not in index:
                index.append(dice_1[i] + dice_2[j])
        else:
            pass

    result = stdarray.create1D(len(index), 0)
    for i in range(n):
        sum = dice_1[stdrandom.uniformInt(0, 5)] + dice_2[stdrandom.uniformInt(
            0, 5)]
        result[sum] += 1

    return result
Ejemplo n.º 8
0
    def __init__(self, filename):
        instream = InStream(filename)
        n = instream.readInt()
        radius = instream.readFloat()
        stddraw.setXscale(-radius, +radius)
        stddraw.setYscale(-radius, +radius)

        self._bodies = stdarray.create1D(n)
        for i in range(n):
            rx = instream.readFloat()
            ry = instream.readFloat()
            vx = instream.readFloat()
            vy = instream.readFloat()
            mass = instream.readFloat()
            r = Vector([rx, ry])
            v = Vector([vx, vy])
            self._bodies[i] = Body(r, v, mass)
Ejemplo n.º 9
0
    def audio_note(self):
        stddraw.setXscale(0, 50)
        stddraw.setYscale(-10, 10)

        print('enter audio_note')
        duration = self.f
        hz = notes[self.n - 1]
        n = int(SPS * duration)
        samples = stdarray.create1D(n + 1, 0.0)
        for i in range(n + 1):
            samples[i] = math.sin(2.0 * math.pi * i * hz / SPS)
        print(samples)
        for i in range(0, n - 100, 100):
            stddraw.line(i / 500, samples[i], (i + 100) / 500,
                         samples[i + 100])
        stddraw.show()
        stdaudio.playSample(samples)
        print('play')
        stdaudio.wait()
Ejemplo n.º 10
0
    def transferstr(self, choice):

        if choice == 'h':

            k = len(self.string)
            string = self.string

        if choice == 'u':
            k = len(str(self.int))
            string = str(self.int)

        list_new = stdarray.create1D(k, 0)
        for i in range(len(string)):

            list_new[i] = str(self._transfer(choice, string[i]))

        tmp = ''
        print(list_new, type(list_new))
        for item in list_new:
            print('item is:', item)
            tmp += item
        print('tmp is:', tmp)

        return tmp
Ejemplo n.º 11
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()
Ejemplo n.º 12
0
def tone(hz,duration,sps=44100):
    n = int(sps*duration)
    a = stdarray.create1D(n+1,0.0)
    for i in range(n+1):
        a[i] = math.sin(2.0*math.pi*i*hz/sps)
    return a
Ejemplo n.º 13
0
1:命令行输入指定月份,日期,测试次数
2: 函数1生成随机月份,日期
3: 函数2对比新的随机月份,日期,并返回结果
4: 如果结果为True,则返回人数
5: 2 - 4 循环目标次数,函数3 计算出概率分布
6: 函数4 画出概率分布密度图
'''

import random
from stdpackage import stdarray,stddraw
import  sys



possibility = stdarray.create1D(364,0)
def gen_birthday():
    print('enter gen_birthday')
    month_date = {1:[1,31],
                  2:[1,28],
                  3:[1,31],
                  4:[1,30],
                  5:[1,31],
                  6:[1,30],
                  7:[1,31],
                  8:[1,31],
                  9:[1,30],
                  10:[1,31],
                  11:[1,30],
                  12:[1,31]}
    month = random.randint(1,12)
Ejemplo n.º 14
0
sys.path.insert(0,'/Users/Jane/Library/Python/3.5/lib/python/site-packages/')
sys.path.insert(0,'/Users/Jane/Desktop/PythonLearning')

from miaozaiye.randomqueue import RandomQueue
from miaozaiye.nodequene import link
from stdpackage import stdstats,stddraw,stdarray

M = 5
N = 500
T = 3
servicegroup = RandomQueue()

for i in range(M):
    servicegroup.enqueue(list())

Length = stdarray.create1D(M,0)
for i in range(N):
    best = servicegroup.sample()
    print("object {0}".format(i))
    for randomtry in range(T-1):
        queue = servicegroup.sample()
        print('find random queue:',queue)
        if len(best) > len(queue):
            best = queue
    best.append(i)

    a = 0
    for list in servicegroup.queue():
        Length[a]=len(list)
        a+=1
    stddraw.clear()
Ejemplo n.º 15
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:
        if p < P_accumulated[i][j]:
            return j
Ejemplo n.º 16
0
 def __init__(self, n):
     self._freq = stdarray.create1D(n, 0)
Ejemplo n.º 17
0
def superpose(a,b,aWeight,bWeight):
    c = stdarray.create1D(len(a),0.0)
    for i in range(len(a)):
        c[i] = aWeight*a[i]+bWeight*b[i]

    return c
Ejemplo n.º 18
0
from stdpackage import stdaudio
from stdpackage import stdarray
import math
import sys

SPS = 44100
hz = 440.0
duration = 10.0
n = int(SPS*duration)
a = stdarray.create1D(n+1)
for i in range(n+1):
    a[i]=math.sin(2.0*math.pi*i*hz/SPS)

stdaudio.playSample(a)
stdaudio.wait()
Ejemplo n.º 19
0
    def __sub__(self, other):
        result = stdarray.create1D(self._n, 0)
        for i in range(self._n):
            result[i] = self._coords[i] - other._coords[i]

        return Vector(result)
Ejemplo n.º 20
0
    def scale(self, alpha):
        result = stdarray.create1D(self._n, 0)
        for i in range(self._n):
            result[i] = alpha * self._coords[i]

        return Vector(result)
Ejemplo n.º 21
0
import math
from stdpackage import stdarray
from stdpackage import stdaudio
from stdpackage import stdio
from stdpackage import stddraw

SPS = 44100
CONCERT_A = 440.0

stddraw.setXscale(0,50)
stddraw.setYscale(-20,20)
height = 1
while not stdio.isEmpty():

    pitch = stdio.readInt()
    duration = stdio.readFloat()
    hz = CONCERT_A*(2**(pitch/12.0))
    n = int(SPS*duration)
    samples = stdarray.create1D(n+1,0.0)
    for i in range(n+1):
        samples[i] = math.sin(2.0*math.pi*i*hz/SPS)
    stdaudio.playSamples(samples)


    for i in range(0,n-100,100):
        stddraw.line(i/500,samples[i]+20-height,(i+100)/500,samples[i+100]+20-height)
    stddraw.show(duration*1000)
    height +=2

stdaudio.wait()
Ejemplo n.º 22
0
def draw_clock(H=0, M=0, S=0):
    stddraw.setXscale(-1.5, 1.5)
    stddraw.setYscale(-1.5, 1.5)

    R = 1.1
    Hour_L = 0.4
    Min_L = 0.55
    Sec_L = 0.7
    Hour_count = 0

    Hour_X = stdarray.create1D(12, 0)
    Hour_Y = stdarray.create1D(12, 0)

    for i in range(1, 13):
        Hour_X[i - 1] = 1 * math.cos(-(i / 12 * 2 * math.pi - 1 / 2 * math.pi))
        Hour_Y[i - 1] = 1 * math.sin(-(i / 12 * 2 * math.pi - 1 / 2 * math.pi))

    stddraw.setFontSize(25)

    if H > 11:
        print('H is {0}'.format(H))
        H = H % 12
        Hour_count = 1

    while True:
        while H < 13:

            angle_H = H * 2 * math.pi / 12 - 1 / 2 * math.pi
            print('H is {0}'.format(H))
            if H == 12:
                H = 0
                Hour_count += 1

            H += 1

            if Hour_count % 2 == 0:
                text = 'morining'
            else:
                text = 'afternoon'

            while M < 61:

                angle_M = M * 2 * math.pi / 60 - 1 / 2 * math.pi
                print('m is {0}'.format(M))

                if M == 60:
                    print('m is 60')
                    M = 0
                    break
                else:
                    M += 1
                while S < 61:
                    angle_s = S * 2 * math.pi / 60 - 1 / 2 * math.pi
                    print('s is {0}'.format(S))

                    if S == 60:
                        S = 0
                        print('s is 60')
                        break
                    else:
                        S += 1

                    stddraw.clear()
                    stddraw.circle(0, 0, R)
                    for i in range(1, 13):
                        stddraw.text(Hour_X[i - 1], Hour_Y[i - 1], str(i))
                    stddraw.text(0, 0.85, text)

                    stddraw.setPenRadius(0.02)
                    stddraw.line(0, 0, Hour_L * math.cos(-angle_H),
                                 Hour_L * math.sin(-angle_H))
                    stddraw.setPenRadius(0.01)
                    stddraw.line(0, 0, Min_L * math.cos(-angle_M),
                                 Min_L * math.sin(-angle_M))
                    stddraw.setPenRadius(0.005)

                    stddraw.line(0, 0, Sec_L * math.cos(-angle_s),
                                 Sec_L * math.sin(-angle_s))
                    stddraw.show(1000)
Ejemplo n.º 23
0
命令行模式:
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):
    stdio.writef('%8.5f',ranks[i])
stdio.writeln()

Ejemplo n.º 24
0
from stdpackage import stdarray, stddraw, stdrandom, stdstats
import math
from miaozaiye import gaussian

# n = int(sys.argv[1])
# trials = int(sys.argv[2])

n = 20
trials = 10000
p = 0.1
stddraw.setCanvasSize(1000, 400)

for n in range(20, 1000):

    stddraw.clear()
    freq = stdarray.create1D(n + 1, 0)

    for t in range(trials):
        heads = stdrandom.binomial(n, 0.7)
        freq[heads] += 1

    norm = stdarray.create1D(n + 1, 0)
    for i in range(n + 1):
        norm[i] = 1.0 * freq[i] / trials

    phi = stdarray.create1D(n + 1, 0.0)
    stddev = math.sqrt(n) / 2.0

    for i in range(n + 1):
        phi[i] = gaussian.pdf(i, n / 2.0, stddev)