input: Write a python function to generate a random string of 8 characters using the provided character sets.
  assert len(generate_random_string()) == 8
  assert isinstance(generate_random_string(), str)
  assert any(char.isdigit() for char in generate_random_string())
  assert any(char.islower() for char in generate_random_string())
  assert any(char.isupper() for char in generate_random_string())
output: import random
  import string
  
  def generate_random_string():
      characters = string.ascii_letters + string.digits
      return ''.join(random.choice(characters) for _ in range(8))