我从九月份开始学习Java,但一位教授给了我一项科学课程的作业,让我用Python创建一个程序,该程序将使用最大值和最小值以及该球体(x,y,z)内的15个随机点生成随机直径。
我需要制作一个随机数生成器,生成0.0到1.0之间的数字,这样我就可以把它插入到我的公式中,找到一个随机直径。如果随机数是RN,则为:[(RN*(max-min))+min]
起初我使用了这个随机函数:
from random import*
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)
如果你能回答我问题的任何部分,我将不胜感激,非常感谢你花时间阅读这篇文章!!**顺便说一句,我是usinHi!自9月份以来,我一直在学习Java,但一位教授给了我一项科学课程的任务,让我用Python创建一个程序,该程序将使用最大值和最小值以及该球体(x,y,z)内的15个随机点生成一个随机直径。
我需要制作一个随机数生成器,生成0.0到1.0之间的数字,这样我就可以把它插入到我的公式中,找到一个随机直径。如果随机数是RN,则为:[(RN*(max-min))+min]
起初我使用了这个随机函数:
来自随机导入*RN=随机():
问题是,这个随机函数是[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
将为您提供一个在给定最小值和最大值之间均匀分布的随机数。
只需生成随机点并检查它们是否在球体内。如果不是,请丢弃它们,然后重试。
import math
import random
def generate_points(n_points, min_diameter=0, max_diameter=1):
diameter = random.uniform(min_diameter, max_diameter)
radius = diameter / 2
count = 0
while count < n_points:
x, y, z = [random.uniform(-radius, radius) for _ in range(3)]
distance = math.sqrt(x * x + y * y + z * z)
if distance <= radius:
yield (x, y, z)
count += 1
for x, y, z in generate_points(10):
print x, y, z
注意:这可能会对生成的点产生偏差。(我不确定,实际上可能还可以。)另一种方法可能是使用极坐标,选择两个随机角度和一个随机半径(从中心偏移)。
以下是这种方法的数学模型:
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)
有关分销的更多信息,请参阅此处:
https://math.stackexchange.com/questions/87230/picking-random-points-in-the-volume-of-sphere-with-uniform-probability
http://mathworld.wolfram.com/SpherePointPicking.html(这个是关于球体表面上的点,所以可能没有那么有用)
我把它用于随机生成器,它能工作,我不确定它是否是你想要的,但我希望它能帮助
import random
maths_operator_list=['+','-','*']
maths_operator = random.choice(maths_operator_list)
number_one = random.randint(0,20)
number_two = random.randint(0,20)
correct_answer = 0
print(str(number_one), str(maths_operator), number_two)
if maths_operator == '+':
correct_answer = number_one + number_two
elif maths_operator == '-':
correct_answer = number_one - number_two
elif maths_operator == '*':
correct_answer = number_one * number_two
print(correct_answer)
您可以使用random.range
random.randrange(-15,15,.1)
这将找到一个介于-15和15之间的数字,它可以被0.1整除。
作为随机数生成器的答案:
RN = random.uniform(a, b)
返回一个随机整数N,使得a<=N<=b.
至于如何初始化x和y,当你将y=设置为某个值时,y将被初始化,它会自动执行。