MATLAB二项分布random函数转Python实现求助
MATLAB binom随机数转换为Python代码的解决方案
原MATLAB代码random('binom',1,0.2,[EneuronNum_slow,IneuronNum_slow])的作用是生成一个形状为(EneuronNum_slow, IneuronNum_slow)的二维数组,数组中每个元素服从参数为n=1、p=0.2的二项分布(等价于伯努利分布,取值为0或1,取1的概率是0.2)。
方式1:使用numpy旧版随机API(兼容老代码)
直接调用np.random.binomial,参数对应原MATLAB的二项分布参数,size指定输出数组形状:
import numpy as np weightsEI_slow = np.random.binomial(n=1, p=0.2, size=(EneuronNum_slow, IneuronNum_slow))
方式2:使用numpy新版随机生成器(推荐,更安全)
numpy官方推荐使用Generator对象生成随机数,可避免全局随机状态冲突:
import numpy as np rng = np.random.default_rng() # 初始化独立随机数生成器 weightsEI_slow = rng.binomial(n=1, p=0.2, size=(EneuronNum_slow, IneuronNum_slow))
两种方式的输出均为0和1组成的二维数组,与原MATLAB代码逻辑完全一致。若需要和MATLAB生成的随机结果完全匹配,需设置相同的随机种子:MATLAB中用rng(seed),Python旧版用np.random.seed(seed),新版用rng = np.random.default_rng(seed)。
内容的提问来源于stack exchange,提问作者rajjya rohan
相关产品推荐
相关产品推荐

