477. leetcode题目讲解(Python):在圆内随机生成点(Generate Random Point in a Circle )

题目如下:


题目

我们可以获取的信息为:圆心坐标(x,y),半径。 所以,我们可以取得随机点的坐标范围:

x :  [x-r, x+r]
y :  [y-r, y+r]

从图形上表示,我们可以获取一个正方形的范围,如下图所示:


正方形范围

因此通过random.uniform我们可以生成正方形内(包括边上)的随机点。但题目要求的是生成圆内的随机点, 于是生成随机点后可以通过点到圆心的距离来判断随机点是否在圆内,如果不在圆内,就抛弃该结果,重新生成。

参考代码如下:

import random


class Solution:

    def __init__(self, radius: 'float', x_center: 'float', y_center: 'float'):
        self.radius = radius
        self.x_center = x_center
        self.y_center = y_center
        self.x_max = x_center + radius
        self.y_max = y_center + radius
        self.x_min = x_center - radius
        self.y_min = y_center - radius

    def randPoint(self) -> 'List[float]':
        while True:
            res_x = random.uniform(self.x_min, self.x_max)
            res_y = random.uniform(self.y_min, self.y_max)
            dis = (res_x - self.x_center)**2 + (res_y - self.y_center)**2
            if dis <= self.radius**2:
                return [res_x, res_y]

源码地址:
https://github.com/jediL/LeetCodeByPython

其它题目:[leetcode题目答案讲解汇总(Python版 持续更新)]
(//www.greatytc.com/p/60b5241ca28e)

ps:如果您有好的建议,欢迎交流 :-D,
也欢迎访问我的个人博客 苔原带 (www.tundrazone.com)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基于学生学习共同体培育语文生态课堂文化的研究 近年来,随着现代教育理念的不断深入与...
    火车头123阅读 6,409评论 0 8
  • 前言:1.该项目展示的在spring boot中创建mybatis-plus2.在创建好spring boot项目...
    samgroves阅读 14,912评论 3 9
  • 忽然很羡慕青梅竹马和红袖添香。 又在梦里经历了一些光怪陆离,连大略都不记得了,只记得别人有青梅竹马,记得梦中自己偶...
    刀楚阅读 1,859评论 0 0
  • 雨后的夏季是令人心旷神怡的,所以我亲切的称她为盛夏,见到她,我也就见到你,在雨中,期待雨下的更大,直到倾盆大雨。 ...
    秋枫愉夜客阅读 1,306评论 0 0
  • 文/奋斗一直在路上 出门天地白,飞雪孩童急。 小径无人寻,踏雪登山来。 一片纯洁白,千家屋顶银。 天公始作画,浑然...
    慕容兰馨阅读 793评论 4 14