input: Write a function to generate a random password composed of a combination of letters, numbers, and special characters. The password should be of a fixed length of 8 characters. If no input is provided, generate the password from a predefined set of characters.
  
  
  import random
  
  def generate_random_password():
      string = "abcdefghijklmnopqrstuvwxyz01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()?"
      password =  "".join(random.sample(string, 8))
      return password
  
  assert len(generate_random_password()) == 8
  assert any(char.isdigit() for char in generate_random_password())
  assert any(char.isupper() for char in generate_random_password())
  assert any(char.islower() for char in generate_random_password())
  assert any(char in "!@#$%^&*()?" for char in generate_random_password())
  
output: import random
  
  def generate_random_password():
      string = "abcdefghijklmnopqrstuvwxyz01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()?"
      password =  "".join(random.sample(string, 8))
      return password