JAVA程序设计:在圆内随机生成点(LeetCode:478)
给定圆的半径和圆心的 x、y 坐标,写一个在圆中产生均匀随机点的函数 randPoint 。
说明:
输入值和输出值都将是浮点数。
圆的半径和圆心的 x、y 坐标将作为参数传递给类的构造函数。
圆周上的点也认为是在圆中。
randPoint 返回一个包含随机点的x坐标和y坐标的大小为2的数组。
示例 1:
输入:
["Solution","randPoint","randPoint","randPoint"]
[[1,0,0],[],[],[]]
输出: [null,[-0.72939,-0.65505],[-0.78502,-0.28626],[-0.83119,-0.19803]]
示例 2:
输入:
["Solution","randPoint","randPoint","randPoint"]
[[10,5,-7.5],[],[],[]]
输出: [null,[11.52438,-8.33273],[2.46992,-16.21705],[11.13430,-12.42337]]
输入语法说明:
输入是两个列表:调用成员函数名和调用的参数。Solution 的构造函数有三个参数,圆的半径、圆心的 x 坐标、圆心的 y 坐标。randPoint 没有参数。输入参数是一个列表,即使参数为空,也会输入一个 [] 空列表。
思路:
方法一:拒绝采样
我们使用一个边长为 2R2R 的正方形覆盖住圆 CC,并在正方形内随机生成点,若该点落在圆内,我们就返回这个点,否则我们拒绝这个点,重新生成知道新的随机点落在圆内。
class Solution {private double radius;private double x_center,y_center;public Solution(double radius, double x_center, double y_center) {this.radius=radius;this.x_center=x_center;this.y_center=y_center;}public double[] randPoint() {double x=this.x_center-radius;double y=this.y_center-radius;while(true) {double xx=x+Math.random()*radius*2;double yy=y+Math.random()*radius*2;if(Math.sqrt(Math.pow(xx-this.x_center,2)+Math.pow(yy-this.y_center, 2))<=this.radius){return new double[]{xx,yy};}}}
}
方法二:计算分布函数
class Solution {private double radius;private double x_center,y_center;public Solution(double radius, double x_center, double y_center) {this.radius=radius;this.x_center=x_center;this.y_center=y_center;}public double[] randPoint() {while(true) {double d=Math.sqrt(Math.random())*this.radius;double angle=Math.random()*2*Math.PI;return new double[] {d*Math.cos(angle)+this.x_center,d*Math.sin(angle)+this.y_center};}}
}
JAVA程序设计:在圆内随机生成点(LeetCode:478)相关推荐
- LeetCode 478. 在圆内随机生成点(概率)
1. 题目 给定圆的半径和圆心的 x.y 坐标,写一个在圆中产生均匀随机点的函数 randPoint . 说明: 输入值和输出值都将是浮点数. 圆的半径和圆心的 x.y 坐标将作为参数传递给类的构造函 ...
- 478. Generate Random Point in a Circle | 478. 在圆内随机生成点(Java)
题目 https://leetcode.com/problems/generate-random-point-in-a-circle/ 题解 class Solution {double r, x, ...
- [Swift]LeetCode478. 在圆内随机生成点 | Generate Random Point in a Circle
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- python生成一个圆_478. 在圆内随机生成点(Python)
题目 难度:★★☆☆☆ 类型:几何 方法:拒绝采样 力扣链接请移步本题传送门 更多力扣中等题的解决方案请移步力扣中等题目录 给定圆的半径和圆心的 x.y 坐标,写一个在圆中产生均匀随机点的函数 ran ...
- 在一个圆内随机取若个坐标点(python)
在一个指定位置的圆内随机取若干个坐标点,num为数量,radius为圆的半径,(centerx, centery)为圆心坐标. 方法一:根据条件判断的随机点产生方法 import random imp ...
- 在多边形内随机生成点
在多边形内随机生成点 在多边形内随机生成点这个问题可以理解为判断一个点是否在多边形内. 最近项目有个需求,需要在地图区域随机生成一些点.完成后效果如下: 因为项目使用点是d3,所有优先考虑d3.js中 ...
- MATLAB实现圆内随机撒点
已知圆的半径和圆心坐标以及要撒的点的个数,实现在院内随机撒点.结果如下: 代码如下: function [x,y]=DrawPoint(x0,y0,R,num_Dian) % 输入依次是:圆心横纵坐标 ...
- matlab 非均匀用户撒点,MATLAB实现圆内随机撒点
已知圆的半径和圆心坐标以及要撒的点的个数,实现在院内随机撒点.结果如下: 代码如下: function [x,y]=DrawPoint(x0,y0,R,num_Dian) % 输入依次是:圆心横纵坐标 ...
- python在多边形内随机生成点_Python随机生成均匀分布在三角形内或者任意多边形内的点...
Python有一随机函数可以产生[0,1)区间内的随机数,基于此函数生成随机分布在任意三角形内的点 由数学知识得知: 几何体的向量表达形式 直线: 线段: 推广到高维 三维平面: 三角形: 注释,v这 ...
- java 在某个范围内随机_java生成某个范围内的随机时间
Date randomDate=randomDate("2010-09-20","2010-09-21"); /** * 生成随机时间 * @param beg ...
最新文章
- mysql中比较函数_MySQL:MySQL层比较函数调用
- 拆分字符串的表值函数
- iOS6和iOS7代码的适配(1)
- Linux系统 proc self,Linux内核源代码情形分析-特殊文件系统/proc-对/proc/self/cwd的访问...
- SAP gateway的307重定向
- java任务分支和合并_合并/分支战略
- # 定义四边形_对特殊平行四边形核心梳理,拓展提升思维
- Centos7部署轻量级自动化运维工具pssh (亲测)
- antd upload手动上传_基于MVVCTP5的文件上传
- android mmkv使用_[Android]高性能MMKV数据交互分析-MMKV初始化
- png在线转换透明ICO
- zen-cart修改 zencart 模板修改
- 如何合并多个工作表或多个工作簿?3种合并方法都在这
- 新浪微博客户端开发之发布微博,Android面试题
- SEO优化——向各大网站提交自己的网址,加快收录速度
- 【.NET】用Aspose.Words for .NET动态生成word文档中的数据表格
- 【数学计算】点乘/点积/内积/数量积/叉乘/外积/叉积/向量积
- 联邦学习 Federated Learning 相关资料整理
- 【吴恩达深度学习编程作业】4.4特殊应用——人脸识别和神经风格转换(问题未解决)
- SpringBoot+Vue项目校园防疫管理系统
热门文章
- bzoj1754 [Usaco2005 qua]Bull Math
- 第11章 Linux的网络管理
- [转]在数学的海洋中飘荡
- ultravnc download windows 7,ultravnc download windows 7软件的4大优势
- 官方rom提取原签名工具_官方和第三方ROM的提取与分解
- 手机微信wifi怎么连接到服务器地址,出门在外用手机流量太贵,教你一招,用微信就能连接附近wifi...
- WordPress个人博客Cosy3.1.3主题+积木部分插件
- 浙大超厉害计算机硕士生导师
- win10不能正常安装.NET Framework 3.5,报0x800F081F错误。
- windows memcached php扩展,Memcached 的学习:windows下php开memcached扩展