What is the best way to create random and different scenarios for a game?

What is the best way to create random and different scenarios for a game? like sleuth game.
As an investigator, the player must solve the murder mystery by examining the estate and talking to its occupants. The player can move the character and interact with persons and objects. To win the game, the player must accurately identify the murder weapon, room the murder took place, and the murderer.
I want to make a different experience for players every time they run the game. Depending on the target and enemy, they will see different dialogs. As a result, the players don’t know who is enemy at the beginning of the game, and they should learn that through dialogs with other NPCs. As an example:
scenario 1: Dialog =A, Target =A, Enemy= Person1
scenario 2: Dialog =B, Target =A, Enemy= Person1
scenario 3: Dialog =B, Target =C, Enemy= Person4
scenario 4: Dialog =c, Target =A, Enemy= Person2

from your array of characters you can select a random element to be the “current enemy”

you can construct your dialog database in a way that lines of dialog can be filtered as “only friendly” “only enemy” and “both”.

then, when selecting which dialog strings to display, the enemy character just filters out the friendly only dialogs.

that’s just some general idea to start from. you’d have to get a lot more specific about the game to say much else i think