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?

  • \$\begingroup\$ Does my answer here help you? gamedev.stackexchange.com/questions/166746/… \$\endgroup\$
    – Almo
    Jan 25, 2019 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, 2019 at 22:12
  • \$\begingroup\$ @Morgan if your weights aren't in "any particular order" (and need to be) sort them. \$\endgroup\$ Jan 26, 2019 at 2:01


Browse other questions tagged .