0

我想在单位圆上生成随机点。这是最好的方法吗?

static Random rand = new Random();
float angle = 4 * Math.PI * (rand.NextDouble() - 0.5);
float x = Math.Sin(angle);
float y = Math.Cos(angle);
4

1 回答 1

4

如果您Random几乎同时创建两个对象,它们将使用相同的种子,从而产生相同的随机值。解决这个问题的一个简单方法是让 this 共享一个Random对象。第二个,虽然不太重要,但它4*pi是 720 度,而不是 360 度。你只需要做2 * Math.PI ....

private static readonly Random rand = new Random();

void DrawRandom()
{
    float angle = 2 * Math.PI * (rand.NextDouble() - 0.5);
    float x = Math.Sin(angle);
    float y = Math.Cos(angle);
    // do something
}
于 2013-07-28T01:29:48.787 回答