randint和repeat的用法,场景为生成规模为pop_size的二进制编码的基因
import numpy as np
self.pop = np.random.randint(*DNA_bound, size=(1, self.DNA_size)).repeat(pop_size, axis=0)
输出为
[[1 0 0 1 1]
[1 0 0 1 1]]
以下内容参考点击打开链接
①randint(low,high=None,size=None,dtype='l')
- 返回随机整数,范围区间为[low,high),包含low,不包含high
- 参数:low为最小值,high为最大值,size为数组维度大小,dtype为数据类型,默认的数据类型是np.int
- high没有填写时,默认生成随机数的范围是[0,low)
rand和randn
②rand(d0,d1,…,dn)
- rand函数根据给定维度生成[0,1)之间的数据,包含0,不包含1
- dn表格每个维度
- 返回值为指定维度的array
a=np.random.rand(2,1)
print(a)
print(a.dtype)
输出为
[[ 0.27575047] [ 0.61517605]] float64
④random.choice(a,size=None,replace=True,p=None)
- 从给定的一维数组中生成随机数
- 参数: a为一维数组类似数据或整数;size为数组维度;replace=True表示可以有重复的值;p为数组中的数据出现的概率
- a为整数时,对应的一维数组为np.arange(a)
print(np.random.choice(3,size=(2,3),p=(0.6,0.2,0.2)))
输出为
[[0 0 0] [1 0 2]]
使用场景举例:
选择进行交叉的染色体
sub_pop_idx = np.random.choice(np.arange(0, self.pop_size), size=2, replace=False)