如何解决简单的随机向量函数不止一次返回相同的方向
所以我制作了这个简单的函数来使用 pygame 返回一个大小为 1 的随机向量,基本上是一个随机向量,然后被归一化(给出一个方向)。但是,当我运行调用此函数的 for 循环时,有些方向是相同的,如果不只是翻转 180 或 smth。我迭代了 3 次,只是因为如果它不能做 3 个随机向量,我不能相信它可以做数百个......
import random
import math
from pygame import Vector2
def random_direction():
vector = Vector2(random.uniform(-10,10),random.uniform(-10,10))
if vector.length() == 0:
return vector
else:
return Vector2.normalize(vector)
for i in range(3):
v = random_direction()
print(v)
print(math.degrees(math.atan2(v.y,v.x)))
输出示例:
[-0.481089,0.876672]
118.75655978063934
[0.524372,0.851489]
58.374037634092204
[-0.504321,0.863516]
120.2862923019005
如您所见,第二个和第三个角度相同,只是翻转了。我尝试过其他 PRNG,但没有对它们进行标准化,但似乎没有任何改变。
解决方法
另一种解决方案是在 [0,2*PI] 范围内生成一个随机角度。从角度计算向量:
angle = random.uniform(0,math.PI*2)
vector = Vector2(math.cos(angle),math.sin(angle))
或
vector = Vector2(1,0).rotate_rad(random.uniform(0,math.PI*2))
,
在对象的类中实现了该函数,我想给出随机方向并在 for 循环中创建 n 个对象。因此,将其作为对象属性与其他属性一起实现,而不是连续 3 次查找随机向量即可修复它...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。