python基本随机生成函数_Python中的随机生成器函数

自9月以来,我一直在学习Java,但是一位教授给我分配了科学课程的作业,以用Python创建程序,该程序将使用最大值和最小值以及该球体内的15个随机点生成一个随机直径(x, y,z)。

我需要制作一个随机数生成器,以生成0.0到1.0之间的数字,以便将其插入公式中以查找随机直径。如果随机数为RN,则为:[(RN *(max-min))+ min]

首先,我使用了这个随机函数:

fromrandomimport*RN=random():

问题是,此随机函数为[0.0,1.0)。换句话说,它不包括1.0。如何创建包含1.0的函数?

另外,如果您不介意,可以帮我找到y和z坐标吗?我知道如何找到x。

y值的公式为y = +或-sqrt(r ^ 2-x ^ 2)(也可以随机生成)。我将得到x值,它是随机函数[0.0-1.0]的结果,半径是我直径的一半。我是Python的完全入门者,如何初始化x和y并将上述公式放入?

z的公式相似,z = +或-sqrt(-x ^ 2-y ^ 2 + r ^ 2)(也将随机生成)

这些使用圆的公式:半径:r = sqrt(x ^ 2 + y ^ 2)球体:r = sqrt(x ^ 2 + y ^ 2 + z ^ 2)

如果您能回答我问题的任何部分,我将非常感谢,非常感谢您抽出宝贵的时间阅读本文!!**顺便说一句,我很高兴!自9月以来,我一直在学习Java,但是一位教授给我分配了科学课程的作业,以用Python创建程序,该程序将使用最大值和最小值以及该球体内的15个随机点生成一个随机直径(x, y,z)。

我需要制作一个随机数生成器,以生成0.0到1.0之间的数字,以便将其插入公式中以查找随机直径。如果随机数为RN,则为:[(RN *(max-min))+ min]

首先,我使用了这个随机函数:

来自随机导入* RN = random():

问题是,此随机函数为[0.0,1.0)。换句话说,它不包括1.0。如何创建包含1.0的函数?

另外,如果您不介意,可以帮我找到y和z坐标吗?我知道如何找到x。

y值的公式为y = +或-sqrt(r ^ 2-x ^ 2)(也可以随机生成)。我将得到x值,它是随机函数[0.0-1.0]的结果,半径是我直径的一半。我是Python的完全入门者,如何初始化x和y并将上述公式放入?

z的公式相似,z = +或-sqrt(-x ^ 2-y ^ 2 + r ^ 2)(也将随机生成)

这些使用圆的公式:半径:r = sqrt(x ^ 2 + y ^ 2)球体:r = sqrt(x ^ 2 + y ^ 2 + z ^ 2)

如果您能回答我的问题的任何部分,我将非常感谢,非常感谢您抽出宝贵的时间阅读本文!!!

**顺便说一句,我正在使用python x,y spyder!

解决方案

random.uniform会在给定的最大值和最小值之间给您一个均匀分布的随机数。

只需生成随机点,然后检查它们是否在球体内即可。如果不是,请将其丢弃,然后重试。

importmathimportrandomdefgenerate_points(n_points,min_diameter=0,max_diameter=1):diameter=random.uniform(min_diameter,max_diameter)radius=diameter/2count=0whilecount

注意:这可能会偏向生成哪些点。(我不确定,实际上可能还可以。)另一种方法可能是使用极坐标,选择两个随机角度和一个随机半径(与中心的偏移量)。

这是该方法的数学公式:

theta=random.uniform(0,2*math.pi)phi=random.uniform(-math.pi/2,math.pi/2)x=r*cos(theta)*cos(phi)y=r*sin(phi)z=r*sin(theta)*cos(phi)

有关分发的更多信息,请参见此处:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值