我从九月开始学习Java,但是教授已经为一门科学课程分配了一个用Python创建程序的任务,该程序将使用最大值和最小值生成随机直径,并且在该范围内有15个随机点(x,y,z)。
我需要制作一个随机数生成器,生成介于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!我从九月开始学习Java,但是教授已经为一门科学课程分配了一个用Python创建程序的任务,该程序将使用最大值和最小值生成随机直径,并在此范围内生成15个随机点(x, y,z)。
我需要制作一个随机数生成器,生成介于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!
答案 0 :(得分:2)
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)
有关分发的详情,请参阅此处:
http://mathworld.wolfram.com/SpherePointPicking.html(这个是关于球体表面上的点,所以可能没那么有用)
答案 1 :(得分:1)
我将它用于随机生成器并且它有效,我不确定它是否是您正在寻找的正确的但我希望它有所帮助
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)
答案 2 :(得分:0)
作为随机数发生器的答案:
RN = random.uniform(a, b)
返回随机整数N,使得&lt; = N&lt; = b。
作为如何启动x和y,当你将y =设置为某个东西时,y将被初始化,它会自动执行。
答案 3 :(得分:0)
您可以使用random.range
random.randrange(-15,15,.1)
这将找到介于-15和15之间的数字,可以被0.1整除。