help with wave spawner

  1. I want to make my wave spawner better so the amount of enemies goes up in a curve instead of how it is right now(+1 enemy per wave), how do i do this? ps: i dont want to make it like, twice as much as the previous wave becuase that would be WAYYYYYYY too hard way too fast

  2. i want my wave spawner to have multiple enemies without me having to manually make every single wave. how can i achieve something like this where i can just put in a spawn rate percentage then say, there is a 30% chance to spawn this enemy

how do i do these two things? also im kinda beginner at scripting so idk how to use dictionaries and cases and stuff like that

heres wave spawner script

using UnityEngine;
using System.Collections;

public class WaveSpawner : MonoBehaviour
{
    public GameObject enemyPrefab;
    private int enemyCount;
    private int waveNumber = 1;

    public float timeBetweenEnemySpawn;
    public float timeBetweenWaves;

    public Transform[] spawnPoints;

    bool spawningWave;


    // Start is called before the first frame update
    void Start()
    {
        StartCoroutine(SpawnEnemyWave(waveNumber));
    }

    // Update is called once per frame
    void Update()
    {
        enemyCount = FindObjectsOfType<Enemy>().Length;

        if (enemyCount == 0 && !spawningWave)
        {
            waveNumber++;
            StartCoroutine(SpawnEnemyWave(waveNumber));
        }
    }

    IEnumerator SpawnEnemyWave(int enemiesToSpawn)
    {
        spawningWave = true;
        yield return new WaitForSeconds(timeBetweenWaves); //We wait here to pause between wave spawning
        for (int i = 0; i < enemiesToSpawn; i++)
        {
            Instantiate(enemyPrefab, spawnPoints[Random.Range(0, spawnPoints.Length)].position, enemyPrefab.transform.rotation);
            yield return new WaitForSeconds(timeBetweenEnemySpawn); //We wait here to give a bit of time between each enemy spawn
        }
        spawningWave = false;
    }
}