一、前言
今天在上信息论与编码这门课的时候,看到书上有个题目需要求:单符号离散无记忆二信源,需要用指定概率来生成随机数,书上是用matlab来实现的,matlab中的randsrc函数可以传入元素 和 元素对应的概率 来生成随机数,我就在想这是如何实现的,用python怎么做,查了一圈发现并没有找到想要的信息(后来发现random.choice()可以实现这个功能),其他博客上都写的支支吾吾的,于是我开始自己研究,最后终于想出办法解决问题。
二、代码及思路
举个例子来说明一下:
比如我现在有个数组[1, 2, 3, 4]
我想要他们对应的随机概率为[0.1, 0.2, 0.3, 0.4]
代码
import random
def randomNum_for_probability(array: list, probability_array: list):
"""
按照指定概率生成随机数
:param array: 随机数列表
:param probability_array: 对应每个元素生成的概率
:return: 随机生成的数字
"""
rand_num = random.random() # 随机生成一个0到1之间的浮点数
Sn = 0 # 前n个数生成的概率和
for index,