当随机数生成器在列表中移动时,我如何改变它的概率



我正在做一个附带项目,该项目涉及使用PyTorch随机生成神经网络。问题是,如果输入层和输出层变化太大,那么随机生成隐藏层的大小是低效的。所以我不得不说;比例尺;隐藏层到达输出层时的大小,同时保留其中的随机性部分。

假设我有两个数字(1和20(,我想使用随机数生成器生成一个列表,该生成器可以从1到20之间的一系列数字中进行选择。但我也想改变数字被选中的概率,因为会添加到该列表中。

因此,如果它已经添加了15个数字,那么可以说,第16个数字成为数字16的概率要比成为数字1的概率大得多——但如果代码将第一个数字添加到列表中,那么它成为1的概率要大得多。

myList = generateRandList(1, 20)
print(myList)

[2,2,3,4,6,3,7,6,9,10,12,11,13,12,15,16,18,16,19,20]

我使用的是numpy.random.choice()确实会改变从列表中选取数字的概率,但不会因为它在列表中移动而改变。

您想要使用一个三角分布,其中模式是最上界,这将是一个线性分布,其中N具有最高概率,0具有最低概率:

import random
[int(random.triangular(1,n,n)) for n in range(1, 20)]

按照T先生的建议使用numpy:

import numpy as np
gen = np.random.default_rng()
np.fromiter((int(gen.triangular(1, n, n)) for n in range(2,20)), dtype=np.uint64)

Numpy执行的检查有点密集,我不得不对下限进行一些修改。

最新更新