我想在单位圆上生成随机点。这是最好的方法吗?
static Random rand = new Random();
float angle = 4 * Math.PI * (rand.NextDouble() - 0.5);
float x = Math.Sin(angle);
float y = Math.Cos(angle);
我想在单位圆上生成随机点。这是最好的方法吗?
static Random rand = new Random();
float angle = 4 * Math.PI * (rand.NextDouble() - 0.5);
float x = Math.Sin(angle);
float y = Math.Cos(angle);
如果您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
}