Python以一定的概率生成某个数

比如以15%的概率生成数字0,以10%的概率生成数字1,以25%的概率生成数字2,以36%的概率生成数字3,以14%的概率生成数字4

代码如下:

import random


def number_of_certain_probability(sequence, probability):
    x = random.uniform(0, 1)
    cumulative_probability = 0.0
    for item, item_probability in zip(sequence, probability):
        cumulative_probability += item_probability
        if x < cumulative_probability:
            break
    return item
# 测试代码
value_list = [0, 1, 2, 3, 4]
probability = [0.15, 0.1, 0.25, 0.36, 0.14]
zero = 0
one = 0
two = 0
three = 0
four = 0
for i in range(1000):
    result = number_of_certain_probability(value_list, probability)
    if result == 1:
        one = one + 1
    elif result == 0:
        zero = zero + 1
    elif result == 2:
        two = two + 1
    elif result == 3:
        three = three + 1
    elif result == 4:
        four = four + 1
print(zero, one, two, three, four)

结果

在这里插入图片描述

进行1000次试验,结果符合预期。

  • 14
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以提供一个例子,其中可以使用Python来实现威布尔分布的失效率:import numpy as np from scipy.stats import weibull_min# 生成据 shape, scale = 2.5, 1 data = weibull_min.rvs(shape, scale, size=1000)# 计算失效率 failure_rate = np.mean(data < 1)print('失效率:', failure_rate) ### 回答2: 威布尔分布是一种描述产品或者设备失效概率随时间变化的概率分布模型。它通常被用来描述设备寿命的分布情况。下面是用Python编写一个威布尔分布的失效率的示例代码: ```python import numpy as np import matplotlib.pyplot as plt def weibull_failure_rate(t, shape, scale): # 威布尔分布的失效率函定义 return (shape / scale) * ((t / scale) ** (shape - 1)) * np.exp(-((t / scale) ** shape)) # 设置威布尔分布的形状参和尺度参 shape = 2.5 scale = 100 # 生成时间序列 time = np.linspace(0, 1000, 1000) # 计算失效率 failure_rate = weibull_failure_rate(time, shape, scale) # 绘制失效率曲线 plt.plot(time, failure_rate) plt.xlabel('时间') plt.ylabel('失效率') plt.title('威布尔分布的失效率曲线') plt.grid(True) plt.show() ``` 在这个示例代码中,我们使用`numpy`库来生成表示时间序列的组`time`。然后我们定义了一个`weibull_failure_rate`函,它接受时间、形状参和尺度参作为输入,并输出威布尔分布的失效率。最后,我们使用`matplotlib`库来绘制失效率随时间变化的曲线。 这段代码将生成一个威布尔分布的失效率曲线,并将其显示出来。你可以根据自己的需求修改形状参`shape`和尺度参`scale`来调整失效率曲线的形状。 ### 回答3: 威布尔分布(Weibull distribution)是一种常用于描述可靠性和失效率的概率分布模型。其密度函为: f(x; λ, k) = (k/λ) * (x/λ)^(k-1) * e^(-(x/λ)^k) 其中,λ为尺度参,k为形状参。 为了计算威布尔分布的失效率,我们可以使用Python编程语言来实现。 ```python import math def weibull_failure_rate(x, scale, shape): # 计算威布尔分布的失效率 rate = (shape / scale) * (x / scale) ** (shape - 1) * math.exp(- (x / scale) ** shape) return rate # 示例调用 scale = 5.0 # 设置尺度参 shape = 2.0 # 设置形状参 x = 8.0 # 输入x值 failure_rate = weibull_failure_rate(x, scale, shape) print("失效率为:", failure_rate) ``` 上述代码中定义了一个函`weibull_failure_rate`,用于计算威布尔分布的失效率。在函中,`x`为传入的点值(时间),`scale`为尺度参,`shape`为形状参。根据威布尔分布密度函的计算公式,通过这些参的计算可以得到威布尔分布的失效率。 在示例中,设置了尺度参为5.0,形状参为2.0,输入了一个时间值x为8.0,通过函计算得到的失效率将被打印输出。 这段Python代码可以帮助你计算威布尔分布的失效率,并根据不同的参值进行灵活调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值