0
\$\begingroup\$

I am creating a random object spawning script in Unity with c#, and am wondering what the ideal way to do this task would be. So I have a list of 31 objects or so, of my special class type. Each one has an arbitrary number assigned as it's weight. This number is divided by the sum of all their weights and multiplied by 100 to make their percent chance for appearing. It's at this stage where I'm stumped. How should I go about selecting them with a random number between 0 and 100? My first idea was to give each one a range and if the random number falls within it, I select that one, but that method does not sound like it would be the most elegant and would involve like 31 IF statements. What is the standard way to do this sort of random selection?

\$\endgroup\$
3
  • \$\begingroup\$ Does my answer here help you? gamedev.stackexchange.com/questions/166746/… \$\endgroup\$ – Almo Jan 25 '19 at 22:00
  • \$\begingroup\$ Would this solution still work if I had to cycle between more than two events, or if my event weights were not in any particular order in the list? Also I should have called my object's frequency in my example it's weight instead, I'll edit it as such. \$\endgroup\$ – Morgan Jan 25 '19 at 22:12
  • \$\begingroup\$ @Morgan if your weights aren't in "any particular order" (and need to be) sort them. \$\endgroup\$ – Draco18s no longer trusts SE Jan 26 '19 at 2:01