我想在单位圆上生成随机点。这是最好的方法吗?
static Random rand = new Random();
float angle = 4 * Math.PI * (rand.NextDouble() - 0.5);
float x = Math.Sin(angle);
float y = Math.Cos(angle);
答案 0 :(得分:4)
如果几乎同时创建两个Random
个对象,它们将使用相同的种子,从而产生相同的随机值。解决此问题的一种简单方法是使此共享成为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
}