首页 > 解决方案 > 带尖峰的随机数 gen

问题描述

我正在 python 中生成一些数据,如下所示:

import random
import time

def generate_random_data():
    pressure = float(random.randint(2409,2415) / 100)
    temp = float(random.randint(6989,7045) / 100)
    data = {"pressure": pressure, "temperature": temp}
    return data

if __name__ == '__main__':
    while True:
        rslt = generate_random_data()
        print(rslt)
        time.sleep(60)

但我还想做的是每隔一段时间在范围外产生一个尖峰......我怎么能在产生一个范围内的数字时做这样的事情?

标签: python-3.x

解决方案


您的代码的一点更新:

import random
import time

def generate_random_data():
    peak_chance = random.randint(0, 100)
    is_peak = False

    if peak_chance < 10:  # 10% chance for under-value
        pressure = float(random.randint(2309, 2409) / 100)
        temp = float(random.randint(6889, 6989) / 100)
        is_peak = True
    elif peak_chance > 90:  # 10% chance for peak-value
        pressure = float(random.randint(2415, 2515) / 100)
        temp = float(random.randint(7045, 7145) / 100)
        is_peak = True
    else:
        pressure = float(random.randint(2409, 2415) / 100)
        temp = float(random.randint(6989, 7045) / 100)

    data = {"pressure": pressure, "temperature": temp, "peak": is_peak}
    return data


if __name__ == '__main__':
    while True:
        rslt = generate_random_data()
        print(rslt)
        time.sleep(1)

输出:

{'pressure': 24.14, 'temperature': 70.4, 'peak': False}
{'pressure': 24.13, 'temperature': 70.2, 'peak': False}
{'pressure': 24.11, 'temperature': 69.97, 'peak': False}
{'pressure': 24.14, 'temperature': 70.42, 'peak': False}
{'pressure': 24.12, 'temperature': 69.95, 'peak': False}
{'pressure': 24.1, 'temperature': 70.26, 'peak': False}
{'pressure': 24.09, 'temperature': 69.95, 'peak': False}
{'pressure': 24.12, 'temperature': 70.02, 'peak': False}
{'pressure': 24.12, 'temperature': 70.0, 'peak': False}
{'pressure': 24.14, 'temperature': 70.15, 'peak': False}
{'pressure': 24.1, 'temperature': 70.3, 'peak': False}
{'pressure': 23.57, 'temperature': 69.8, 'peak': True}
{'pressure': 24.15, 'temperature': 70.13, 'peak': False}
{'pressure': 24.14, 'temperature': 70.23, 'peak': False}
{'pressure': 24.74, 'temperature': 70.7, 'peak': True}
{'pressure': 24.12, 'temperature': 70.22, 'peak': False}
{'pressure': 23.81, 'temperature': 69.24, 'peak': True}
{'pressure': 24.12, 'temperature': 70.13, 'peak': False}
{'pressure': 24.09, 'temperature': 70.33, 'peak': False}
{'pressure': 24.13, 'temperature': 69.95, 'peak': False}
{'pressure': 24.12, 'temperature': 70.13, 'peak': False}
{'pressure': 24.09, 'temperature': 70.35, 'peak': False}
{'pressure': 24.3, 'temperature': 71.18, 'peak': True}
{'pressure': 24.11, 'temperature': 70.26, 'peak': False}
{'pressure': 24.11, 'temperature': 69.98, 'peak': False}
{'pressure': 24.1, 'temperature': 70.11, 'peak': False}
{'pressure': 24.13, 'temperature': 70.16, 'peak': False}
{'pressure': 24.15, 'temperature': 70.05, 'peak': False}

推荐阅读