【发布时间】:2015-07-26 14:33:46
【问题描述】:
我正在尝试生成具有特定纬度和经度范围的随机数据。下面的代码执行没有错误,也产生了输出,但不完全符合我的预期。
程序:
import random
import sys
import math
latitude = 19.99
longitude = 73.78
output_file = 'filename'
def generate_random_data():
with open(output_file, 'w') as output:
hex1 = '%012X' % random.randint(0,100)
flt = float(random.randint(0,100))
latitude = math.acos(random.random() * 2 - 1)
longitude = random.random() * math.pi * 2
output.write('%s %.1f %.6f %.6f \n' % (hex1.lower(), flt, longitude, latitude))
if __name__ == '__main__':
generate_random_data()
上面的代码运行但只给出了一行(这可能是缩进问题)但这并没有给我随机的lat & long 如上所述的所需地理位置。
生成的输出:
000000000020 95.0 3.929691 1.749931
预期输出:
000000000020 95.0 19.999691 73.799931
这只会生成one 行,而我试图拥有million 行
【问题讨论】:
-
随机生成看起来是正确的 - 可能导致问题的原因是从未定义过“output_file”(并且从未调用过该函数)。
-
@Scott 该程序已被编辑,因为它确实显示了您提出的点的错误。
-
@Scott
col[0]和col[1]是正确的,但col[2]和col[3]是4.484670和1.712346是错误的我试图在给定的lat范围内生成和19.99和73.78的long和我也只得到一排。我确实更改了output.write的缩进 -
如果在您的帖子中创建一些预期的输出(纬度、经度的范围、行数等),这可能会有所帮助。
-
为什么不使用专门的包来生成假数据,这样您就可以专注于其他更重要的部分。我建议使用Faker
标签: python math random latitude-longitude