使用lat-long生成随机数据

6 python random math latitude-longitude

我正在尝试生成具有特定纬度和经度范围的随机数据.下面的代码执行时没有错误,也生成输出但不完全符合我的预期.

程序:

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()
Run Code Online (Sandbox Code Playgroud)

上面的代码运行,但只提供一行(这可能是缩进问题)但这不会给我随机latlong所需的Geo位置,如上所述.

产生的输出:

000000000020 95.0 3.929691 1.749931

产量预期: 000000000020 95.0 19.999691 73.799931

这只会产生one行,因为我正在尝试拥有million

Sco*_*ott 9

我想这就是你想要做的.我知道你正在写一个文件; 为了这个例子,我把它带到这里.

import random
import sys
import math

latitude = 19.99
longitude = 73.78

def generate_random_data(lat, lon, num_rows):
    for _ in xrange(num_rows):
        hex1 = '%012x' % random.randrange(16**12) # 12 char random string
        flt = float(random.randint(0,100))
        dec_lat = random.random()/100
        dec_lon = random.random()/100
        print '%s %.1f %.6f %.6f \n' % (hex1.lower(), flt, lon+dec_lon, lat+dec_lat)

generate_random_data(latitude, longitude, 5)
Run Code Online (Sandbox Code Playgroud)

打印:

31d831302b7f 99.0 73.789561 19.997404 
c6ef41c70ebb 0.0 73.780732 19.994279 
4bc2df5388e3 77.0 73.785531 19.994191 
e7648f673475 40.0 73.786610 19.993679 
a11502c744a6 32.0 73.784650 19.997702 
Run Code Online (Sandbox Code Playgroud)

编辑:所以你的功能包括写入文件将是如下

import random
import sys
import math

latitude = 19.99
longitude = 73.78
file_n = 'random_lat_lon.txt'

def generate_random_data(lat, lon, num_rows, file_name):
    with open(file_name, 'w') as output:
        for _ in xrange(num_rows):
            hex1 = '%012x' % random.randrange(16**12)                
            flt = float(random.randint(0,100))
            dec_lat = random.random()/100
            dec_lon = random.random()/100
            output.write('%s %.1f %.6f %.6f \n' % (hex1.lower(), flt, lon+dec_lon, lat+dec_lat))

generate_random_data(latitude, longitude, 5, file_n)
Run Code Online (Sandbox Code Playgroud)

这会将在EDIT上方发布的数据生成到名为"random_lat_lon.txt"的文件中.

  • 我开始写东西,但随后进行搜索并找到http://stackoverflow.com/a/553320/4663466。因此,您可以执行类似s = '07:00:00'e = '16:45:00'f ='%H:%M:%S'和strTimeProp(s,e,f,random的操作。 random())`。例如,这可能会给您“ 12:39:14”。如果您在将此功能集成到上面的函数中遇到任何问题,请将其作为新问题发布,我将尝试在其他人之前回答:) (2认同)