增加数据大小

时间:2015-05-09 04:47:32

标签: python file

我有一个以下给定格式的数据样本。我需要将数据大小增加到大约1亿个条目。行的顺序无关紧要随机行序列会更好。

输入

004096f41eb8 00904bf131ad 40.0 820219 438869 820219 438869
004096f41eb8 00904bf469bd 40.0 820219 438869 820219 438869
00022d56dffe 00022dcbe817 962.0 820353 439280 820353 439280
00022dcbe817 00306511e9e0 540.0 820353 439280 820353 439280
00022dcbe817 00904b21787a 4250.0 820353 439280 820353 439280
00022dcbe817 00904b3b845a 1117.0 820353 439280 820353 439280
00022dcbe817 00904bc3be80 1117.0 820353 439280 820353 439280
00022dcbe817 00904bcd5f00 4250.0 820353 439280 820353 439280
00022dcbe817 00904bfebc7c 3737.0 820353 439280 820353 439280

如何增加数据的大小(手动1亿行是不可能的)。试图找到一些相关的样本无法得到任何。任何有用的建议或参考都会很棒。

1 个答案:

答案 0 :(得分:0)

根据您的撰写方式,我认为您正试图找出如何为测试(或类似)目的生成随机数据

话虽如此,看看你想要生成的样本数据的类型,它看起来像如下:

<hexadecimal> <hexadecimal> <float> <int> <int> <int> <int>

具有十六进制具有前导零到12位数的约束,并且浮点数必须是单位大小的。

但是,如果以上情况属实,那么要生成此类型的数据,您可以按照这一推理行做(警告提示,这是一次天真的尝试!)

def generate_random_data():
   hex1 = '%012X' % random.randint(0,10000000000)
   hex2 = '%012X' % random.randint(0,10000000000)
   flt = float(random.randint(0,100000)) # change this value as required
   int1 = random.randint(0,1000000) 
   int2 = random.randint(0,1000000) 
   int3 = random.randint(0,1000000) 
   int4 = random.randint(0,1000000) 

   s = '%s %s %.1f %d %d %d %d' % (hex1.lower(), \
                                   hex2.lower(), \
                                   flt, \
                                   int1, \
                                   int2, \
                                   int3, \
                                   int4)
   return s

def generate_random_data_strings(n):
    for i in xrange(n):
        print generate_random_data()

如果这是正确的,那么只需调整最多所需的值,然后将其写入文件即可。 但是,根据您提供的数据,我无法对您的值的最大值做出合理的论证 - 因此请根据需要进行更改。

示例运行

generate_random_data_strings(7)

示例输出

00005f8e93fc 000168ed5d44 9604.0 551625 674203 912016 143600
0000c104ecfa 0000f470720a 88605.0 636828 692739 388774 748867
00021f833e47 00001fad166f 45388.0 841076 93054 373244 356865
0001d8fe8c3c 0000f70e0e61 48101.0 566598 800563 978234 141179
000157f0f23a 00018bf2db0e 24763.0 485468 138221 722335 256191
000097d60fe9 0001550f6640 27414.0 153090 3736 761677 656677
0000675efc87 00003458055a 98721.0 736265 565842 697767 521413

编辑(生成纬度和经度的其他列)

int4

下添加以下内容(并正确缩进)
longitude = random.random() * math.pi * 2
latitude = math.acos(random.random() * 2 - 1)

然后将s修改为此(并在插入的参数末尾插入纬度和经度,并将其用作精度http://en.wikipedia.org/wiki/Decimal_degrees的参考):

'%s %s %.1f %d %d %d %d %.6f %.6f'