input: Write a function to generate a random password of length 8 characters, which includes at least one lowercase letter, one uppercase letter, one digit, and one special character. The function should return the generated password.
  
  assert generate_random_password() != generate_random_password()
  assert len(generate_random_password()) == 8
  assert any(char.islower() for char in generate_random_password())
  assert any(char.isupper() for char in generate_random_password())
  assert any(char.isdigit() for char in generate_random_password())
  assert any(char in "!#$%&'()*+,-./:;<=>?@[\]^_`{|}~" for char in generate_random_password())
output: import random
  import string
  
  def generate_random_password():
      lower = random.choice(string.ascii_lowercase)
      upper = random.choice(string.ascii_uppercase)
      digit = random.choice(string.digits)
      special = random.choice("!#$%&'()*+,-./:;<=>?@[\]^_`{|}~")
      remaining = random.choices(string.ascii_letters + string.digits + "!#$%&'()*+,-./:;<=>?@[\]^_`{|}~", k=4)
      password = [lower, upper, digit, special] + remaining
      random.shuffle(password)
      return ''.join(password)