Per rimanere al codice di
@Star-Dust , qualcosa del genere
dim mylist as list
list.initialize
list.addall(array as string("Giovanni","Mrco"...))
....
A=RND(0,100)
If A>=0 AND A<30 Then log(mylist(0))
If A>=30 AND A<50 Then log(mylist(1))
Avrai notato che i range di ciascun test corrispondono alle percentuali da te previste per i vari nominativi.
La cosa potrebbe essere anche più"dinamica" se prevedi un type con nominativo e percentuale e imposti il test con limite superiore pari a quanto ricavato dall'elemento nel type e limite inferiore pari al "precedente" limite superiore.
Un altro sistema potrebbe essere u7na lunga li8sta (100 elementi", dove ciascun nominativo appare tante volte quanta è la sua percentuale. Con un'estrazione random becchi a caso nel listone sapendo che Giovanniaveva il 30% di probabilità di uscire, MArco 20%..etc
Se, a listone completo, li mischi (cerca shuffle) hai ancora più entropia ma rispetti le probabilità di ciascuno.
Sono solo considerazioni in libertà. Oggi qui piove e mi sa che mi tocca lavorare h24....