minisql

small tool to query json files with ltl-flavored sql queries
Log | Files | Refs | README

randgen.py (3443B)


      1 import json
      2 import sys
      3 import random
      4 import urllib.request
      5 import time
      6 
      7 WORDS = [l.strip() for l in open("./words.txt").readlines()]
      8 
      9 def cities():
     10     states = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California',
     11               'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia',
     12               'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas',
     13               'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts',
     14               'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana',
     15               'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico',
     16               'New York', 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma',
     17               'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina',
     18               'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont',
     19               'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming']
     20     regions = ["South", "West", "Southwest", "North", "East", "Northeast",
     21                "Middle", "Midwest", "Mideast", "Nowhere"]
     22 
     23     data = []
     24     for i in range(10000):
     25         name1 = random.choice(WORDS).capitalize()
     26         name2 = random.choice(WORDS).capitalize()
     27         data.append({"state": random.choice(states),
     28                      "region": random.choice(regions),
     29                      "name": f"{name1} {name2}",
     30                      "pop": random.randint(1000000, 1000000000),
     31                      "pop_male": random.randint(10000, 1000000),
     32                      "pop_female": random.randint(10000, 1000000)})
     33 
     34     f = open("./cities.json", "w")
     35     f.write(json.dumps(data))
     36     f.close()
     37 
     38 class Customer:
     39     def __init__(self):
     40         self.past_actions = []
     41         self.name = f"{random.choice(WORDS).capitalize()} Corp."
     42         self.headcount = random.randint(10, 100000)
     43     
     44     def next(self):
     45         self.headcount = random.randint(10, 100000)
     46         if self.past_actions == []:
     47             self.past_actions.append("new")
     48             return "new"
     49         possible = []
     50         if "new" in self.past_actions:
     51             if "buy" not in self.past_actions:
     52                 self.past_actions.append("buy")
     53                 return "buy"
     54         if "buy" in self.past_actions:
     55             if "return" not in self.past_actions:
     56                 action = ["return", "complain"]
     57                 self.past_actions.append(random.choice())
     58             else:
     59                 self.past_actions.append("leave")
     60         return self.past_actions[-1]
     61 
     62 def customers(seq=True): 
     63     data = []
     64     actions = ["buy", "new", "return", "complain", "leave"]
     65     users = [Customer() for i in range(100)]
     66     t = int(time.time())
     67     for i in range(1000):
     68         t += random.randint(600, 604800 * 3)
     69         user = random.choice(users)
     70         entry = {}
     71         if not seq:
     72             entry["time"] = t
     73         entry.update({ "action": user.next(),
     74                        "name": user.name,            
     75                        "headcount": user.headcount })
     76         data.append(entry)
     77         if data[-1]["action"] == "leave":
     78             users.remove(user)
     79             users.append(Customer())
     80 
     81     f = open(f"./{'seq' if seq else ''}users.json", "w")
     82     f.write(json.dumps(data))
     83     f.close()
     84 
     85 if len(sys.argv) < 2:
     86     print("usage: randgen.py [cities/sequsers/users]")
     87 elif sys.argv[1] == "cities":
     88     cities()
     89 elif sys.argv[1] == "sequsers":    
     90     customers()
     91 elif sys.argv[1] == "users":
     92     customers(seq=False)