- 问题由来
- 第一种方法
- 第二种方法
在做实验时候碰到一个,需要往6个方向中的4个方向加入随机扰动值,每个方向都是由一个三维向量[x, y, z]表示。
有两种方法:
1、将三维向量转换成角度,扰动由角度值表示,再将角度化成单位向量,此时存在一个问题,化成的单位向量存在无穷情况。
2、直接往三维向量加入扰动,此时碰到的问题就是:如何随机6个方向中的4个方向?
利用python实现组合数,随机选择6个方向中的4个方向。
第一种方法第一种:列出6个方向选择4个方向的排列组合(15种情况),并将15种情况放在一个列表中,在通过random.randint(0, 14),选择其中的一种组合方式。
a = [[1, 2, 3, 4], [1, 2, 3, 5], [1, 2, 3, 6], [1, 2, 4, 5], [1, 2, 4, 6], [1, 2, 5, 6],
[1, 3, 4, 5], [1, 3, 4, 6], [1, 3, 5, 6], [1, 4, 5, 6], [2, 3, 4, 5], [2, 3, 4, 6],
[2, 3, 5, 6], [2, 4, 5, 6], [3, 4, 5, 6]]
num = random.randint(0, 14)
print('num = ', num, 'a[num] = ', a[num])
第二种方法
首先写成列表[0, 1, 2, 3, 4, 5],然后利用random.shuffle()函数将列表打乱,然后每次只要读取前四个方向即可。
a = [0, 1, 2, 3, 4, 5]
random.shuffle(a)
print('a = ', a)
此方法的注意事项:random.shuffle()函数不能生成新的列表,因此不能写成 a = random.shuffle(a) ! 这么写a = None。 需要写成random.shuffle(a)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)