生成在圆中均匀分布的随机点

/// <summary>
/// 生成在圆中均匀分布的随机点
/// </summary>
/// <param name="radius">圆的半径</param>
/// <param name="random">种子</param>
/// <returns></returns>
public static PointF GenerateCircleRandomPoint(float radius, Random random)
{
    // 角度 theta
    var theta = random.NextDouble() * Math.PI * 2;
    // 生成距离圆心的长度
    var len = Math.Sqrt(random.NextDouble()) * radius;
    var x = Math.Cos(theta) * len;
    var y = Math.Sin(theta) * len;
    return new PointF((float)x, (float)y);
}
int sumCount = 100_000_000;
Random random = new Random();
WSCommFunc.PrintThreadId("Create data...........");
List<DemoItem> testLis = new List<DemoItem>(sumCount);
for (int i = 0; i < sumCount; i++)
{
    var pt = WSCommFunc.GenerateCircleRandomPoint(130, random);
    testLis.Add(new DemoItem()
    {
        X = pt.X,
        Y = pt.Y,
    });
}
posted @   wesson2019  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
历史上的今天:
2020-03-27 WPF 生命周期
点击右上角即可分享
微信分享提示