python做頻率統計圖 完整版

Caomeinico發表於2021-10-21

# your code goes here


from matplotlib import pyplot as plt


import pandas as pd


def linearCongruentialMethod(Xo, m, a, c, randomNums, U):


    randomNums[0] = Xo


    U[0] = randomNums[0] / m


    for i in range(1, 10000):


        # Follow the linear congruential method


        randomNums[i] = ((randomNums[i - 1] * a) + c) % m


        U[i] = randomNums[i] / m


print("a = 1597, b = 0, m = 244944")


a = 1597


c = 0


m = 244944


i = 0.01


for i in range(1, 6):


    X0 = i * 0.01


    print("\n X0 = ", X0, "\n")


    noOfRandomNums = 10005


    randomNums = [0] * (noOfRandomNums)


    U = [0] * (noOfRandomNums)


    linearCongruentialMethod(X0, m, a, c, randomNums, U)


    intervals = 20


    freq = [0] * (intervals)


    for j in U:


        x = 1


        x = j * 100 / 5


        freq[int(x)] = freq[int(x)] + 1


    mydata = {'Interval  ': ['[0.00,0.05)', '[0.05,0.10)', '[0.10,0.15)', '[0.15,0.20)', '[0.20,0.25)', '[0.25,0.30)',


                             '[0.30,0.35)', '[0.35,0.40)', '[0.40,0.45)', '[0.45,0.50)', '[0.50,0.55)', '[0.55,0.60)',


                             '[0.60,0.65)', '[0.65,0.70)', '[0.70,0.75)', '[0.75,0.80)', '[0.80,0.85)', '[0.85,0.90)',


                             '[0.90,0.95)', '[0.95,1.00)'],


              'Freuency': freq}


    df = pd.DataFrame(mydata)


    print(df)


    data = {'1': freq[0], '2': freq[1], '3': freq[2], '4': freq[3], '5': freq[4], '6': freq[5], '7': freq[6],


            '8': freq[7], '9': freq[8], '10': freq[9], '11': freq[10], '12': freq[11], '13': freq[12], '14': freq[13],


            '15': freq[14], '16': freq[15], '17': freq[16], '18': freq[17], '19': freq[18], '20': freq[19], }


    interval = list(data.keys())


    frequency = list(data.values())


    fig = plt.figure(figsize=(10, 5))


    plt.bar(interval, frequency, color='maroon', width=0.4)


    plt.show()


print("\na = 51749, b = 0, m = 244944")


a = 51749


c = 0


m = 244944


i = 0.01


for i in range(1, 6):


    X0 = i * 0.01


    print("\n X0 = ", X0, "\n")


    noOfRandomNums = 10005


    randomNums = [0] * (noOfRandomNums)


    U = [0] * (noOfRandomNums)


    linearCongruentialMethod(X0, m, a, c, randomNums, U)


    intervals = 20


    freq = [0] * (intervals)


    for j in U:


        x = 1


        x = j * 100 / 5


        freq[int(x)] = freq[int(x)] + 1


    mydata = {'Interval  ': ['[0.00,0.05)', '[0.05,0.10)', '[0.10,0.15)', '[0.15,0.20)', '[0.20,0.25)', '[0.25,0.30)',


                             '[0.30,0.35)', '[0.35,0.40)', '[0.40,0.45)', '[0.45,0.50)', '[0.50,0.55)', '[0.55,0.60)',


                             '[0.60,0.65)', '[0.65,0.70)', '[0.70,0.75)', '[0.75,0.80)', '[0.80,0.85)', '[0.85,0.90)',


                             '[0.90,0.95)', '[0.95,1.00)'],


              'Freuency': freq}


    df = pd.DataFrame(mydata)


    print(df)


    data = {'1': freq[0], '2': freq[1], '3': freq[2], '4': freq[3], '5': freq[4], '6': freq[5], '7': freq[6],


            '8': freq[7], '9': freq[8], '10': freq[9], '11': freq[10], '12': freq[11], '13': freq[12], '14': freq[13],


            '15': freq[14], '16': freq[15], '17': freq[16], '18': freq[17], '19': freq[18], '20': freq[19], }


    interval = list(data.keys())


    frequency = list(data.values())


    fig = plt.figure(figsize=(10, 5))


    plt.bar(interval, frequency, color='blue', width=0.4)


    plt.show()

好買網提供www,goodmai,com

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70008684/viewspace-2838450/,如需轉載,請註明出處,否則將追究法律責任。

相關文章