python random choice原理_python中在指定概率分布的情况下,为什么设定随机数种子仍影响random.choice的结果?...

展开全部

运行结果是符合p分布的

for循环改成1000次试试32313133353236313431303231363533e59b9ee7ad9431333365666331,3、2、0出现的次数分别是587、299、114次,符合0.6、0.3、0.1import numpy as np

i3 = i2 = i0 = 0

for seed in np.arange(1000):

np.random.seed(seed)

n = np.random.choice(5,p=[0.1, 0, 0.3, 0.6, 0])

i3 += n==3

i2 += n==2

i0 += n==0

print(i3, i2, i0)

随机种子确实影响结果

但不是影响结果的分布情况,而是影响计算机产生随机数的情况,你运行1000次结果一定和我一样,就是因为我们的随机种子给的都是一样的。

随机种子

我们知道计算机无法产生真正的随机数,是通过算法产生的伪随机数,但具有类似于真正随机数的统计特征,如均匀性、独立性等。

随机种子的作用在于给定这个产生随机数算法的初值。给定后会影响以后产生随机数的具体值是多少,但不影响这些随机数的分布情况。

上面那个程序,如果我们不指定随机种子,那么结果符合p分布,但你与我结果不同,同一段代码多次运行结果也不同。如果指定随机种子,那么结果依然符合p分布,但全天下人运行结果都相同。

如果已知两粒种子(随机种子)和两个生长环境(产生随机数算法)都完完全全一样,那么可以得出长出的两个作物完全一样(忽略量子力学影响)。但这两粒种子无论相同与否都不会影响长出的作物到底是玉米还是高粱(不影响结果分布情况)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: np.random.choice函数是numpy库的一个随机选取函数,可以根据给定的概率值来选择元素。 当我们需要从一个数组或列表按照一定概率进行选择时,可以使用np.random.choice函数。具体来说,它接受三个参数:a,size和p。 a表示要从选择的数组或列表。size表示要选择的元素个数,可以是一个整数或一个元组。如果size是一个整数,那么只会选择一个元素。如果size是一个元组,那么会选择对应元组长度的元素。p表示选取每个元素的概率值,是一个与a长度相同的数组或列表。 举个例子来说,假设我们有一个数组a = [1, 2, 3, 4, 5],我们想根据概率p = [0.1, 0.2, 0.3, 0.2, 0.2]来选择元素,且只选择一个元素。那么可以使用np.random.choice(a, 1, p=p)来实现。 这样,函数将根据概率值p来选择元素,选择结果可能是1、2、3、4或5,但选择的概率符合给定的概率分布。 总之,np.random.choice函数可以根据给定的概率值来选择数组或列表的元素,并且可以灵活地指定选择的数量。这对于模拟实验、随机抽样等场景非常有用。 ### 回答2: 在NumPy,np.random.choice()函数可以用来从指定的一维数组指定的概率进行随机抽取。 首先,我们需要指定一个一维数组作为抽取的候选池,可以是任意长度的数组。然后,我们可以使用参数p来指定每个元素被抽取的概率。p参数需要是一个与候选池数组长度相等的一维数组,其的值表示每个元素被选的概率。 接下来,我们可以指定抽样的大小,即我们希望从候选池抽取多少个元素。使用参数size来指定,可以是一个整数或者一个元组,表示抽样的维度。若size为整数,则表示从一维数组抽取size个元素;若size为元组,则表示从候选池抽取相应维度的元素。 当概率p为空时,默认每个元素被选的概率相等。 下面是一个例子,假设我们有一个候选池为[1, 2, 3, 4, 5],并且我们希望以0.1、0.3、0.2、0.15和0.25的概率分别抽取这五个元素。我们可以使用np.random.choice()函数来实现: ``` python import numpy as np pool = [1, 2, 3, 4, 5] probabilities = [0.1, 0.3, 0.2, 0.15, 0.25] result = np.random.choice(pool, size=3, p=probabilities) print(result) ``` 输出结果可能为[2, 5, 3],表示从候选池指定的概率抽取了3个元素。每次运行结果可能不同,因为抽取是随机的。 总之,np.random.choice()函数可以帮助我们在指定的一维数组指定的概率进行随机抽取。这在模拟实验、生成随机样本等方面都很有用。 ### 回答3: 在Python的NumPy库,np.random.choice函数可以用于从给定的一维数组随机选择元素。不过,该函数还可以通过指定概率来增加元素的选概率。 当我们调用np.random.choice函数时,可以通过参数p传入一个概率数组,其的元素与选择元素数组的元素一一对应。这样,选择元素的概率就由概率数组对应位置的元素值决定。 概率数组的元素值表示了对应元素被选择的相对概率。例如,如果某个元素在概率数组的值是2,而其他元素的值都是1,那么该元素被选择的概率就是其他元素被选择的两倍。 如果不提供概率数组,np.random.choice函数会默认将每个元素的选择概率设置为相等。但是,如果提供了概率数组,每个元素被选择的概率将根据概率数组指定的相对概率进行调整。 下面是一个例子,假设我们有一个一维数组arr=[1, 2, 3, 4],并且想要根据相对概率[0.1, 0.2, 0.3, 0.4]来选择元素。我们可以使用np.random.choice函数来实现: import numpy as np arr = [1, 2, 3, 4] prob = [0.1, 0.2, 0.3, 0.4] chosen = np.random.choice(arr, p=prob) 在这个例子,被选择的元素将根据概率数组的相对概率进行选择。元素2被选择的概率是元素1被选择概率的两倍,元素3被选择的概率是元素1的三倍,元素4被选择的概率是元素1的四倍。 需要注意的是,传入的概率数组的元素值应该是非负数,并且概率数组的总和应该为1。如果概率数组不满足这些条件,函数的行为将是不确定的。 希望以上解答能帮助到您!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值