微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

简单的随机向量函数不止一次返回相同的方向

如何解决简单的随机向量函数不止一次返回相同的方向

所以我制作了这个简单的函数来使用 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 举报,一经查实,本站将立刻删除。