Rodeo draw generation is both very simple and very complex. At a very high level it is simple. Put together a run for the competitors in the rodeo events. That seems simple, like throwing a bunch of names in a hat and pulling them out. Draw Generation, done. Easy for a software program to handle. But wait, there’s more. Depending on the rodeo organization, the rodeo draw format and even the event format, there may be additional factors including entry groups, priorities, performances, preferences, event maximums, and go rounds. We will use the phrase “depending on the organization” a lot. There are huge differences in the way rodeo organizations operate. The ability of a rodeo management software package to handle a rodeo draw must take into account a few to all of the additional factors. One of the “depending on the organization” considerations is that in some organizations, all entries will be accommodated into the draw while in others, there may be entries that are “drawn out” of the rodeo. A quick explanation on each of the factors below.
Rodeo Draw Entry Groups
Many rodeo organizations exist for a membership ranging from Junior class members to Open class members. These members include traveling buddies, family members, and roping partners. When they enter a rodeo, they enter as a group, their entries, in all their events, are tied together with a group identifier. So a change to one member of the group might mean a change to all members of the group. The group may include members in team roping, saddle bronc, barrel racing, Junior steer wrestling, Junior barrel racing, etc. An entry “group” could be one competitor, and all their event entries, or several competitors, and all their event entries.
Rodeo Draw Priorities
Within a rodeo organization, they have a number or rules. Some organizations have rules which will place higher priority in the draw generation process on certain members, which extends to their entry groups. This priority may be based on being a long standing member, or being a certain membership type (such as Open members are higher priority than Junior members who are higher priority than local entries), or the number of rodeos they are competing in this weekend, etc. Why this matters is that in some organizations, not every entry is drawn into the rodeo. Some may get drawn out, as mentioned above. A higher priority member, and their entry group, will have a higher likelihood of getting placed in the rodeo.
Rodeo Draw Performances
Many rodeos (depending on the organization) have multiple performances. They may have a Saturday performance and a Sunday performance with a different set of competitors drawn into each performance, but all competing for the same prize money in each event. A competitor, and often an entry group of competitors, may plan to compete in one rodeo on Saturday and a different rodeo, in a different location, on Sunday. So all members of an entry group must be drawn to compete in all their events, in the same performance (on the same day).
Rodeo Draw Preferences
Tied to performances, is the ability of a competitor, or entry group of competitors, to indicate preferences at the time of entry. For example, when entering, they will indicate that they would prefer to compete in (be drawn into) the Saturday performance at Rodeo 1. Then when they enter Rodeo 2, they would request that they would prefer to compete in the Sunday performance. If the were to end up drawn into the same day performance at both rodeos, they can not physically be at both. Often, an entry group will have a first preference and a second preference, such as, we would like to be in the Sunday performance, if not, then put us in the Saturday performance. Or the preferences could be to be drawn into the Sunday performance, or to draw us out of the rodeo.
Rodeo Draw Event Performance Maximums
At some rodeos, there will need to be maximum limits set on the number of competitors that can be drawn in to a specific event, for a specific performance. The reasons are varied. Such as a time limit only allowing up to a certain number of barrel racing runs. Or the reason might be a limit in the number of rodeo stock such as there are only a specific number of bulls provided by the stock contractor, they can only be ridden once per day. Once the maximum is reached, there can not be any more competitors drawn into the event.
Rodeo Draw Go Rounds
Some rodeo draws have multiple performances, as described above, and some have multiple Gos. A Multi-Go rodeo typically will involve the same list of competitors with a run/ride in Go 1 and another in Go 2 (and maybe Go 3). These Gos are usually scheduled on separate days, Go 1 on Saturday, Go 2 on Sunday, for example. In a multi-go rodeo, there is usually an implication that you are either entered in the rodeo and will compete in all Gos, or you just don’t enter the rodeo. In a multi-go rodeo, the run order for Go 1 will be a randomly generated order. Go 2, and any additional Gos, could be random, could be the reverse order, could be the Go 1 order repeated, or could be based on the current standings within the results.
Simple to Complex
Let’s circle back to the beginning. Sometimes draw generation is quite simple, programmatically as simple as pulling names out of a hat. Pick an event, randomize the order of competitors in the event. Next event. Quite often this is the case with a Youth Rodeo Association, or a Barrel Racing Producer, the default setting is that all entrants will be placed in the rodeo. Then you have the opposite end of the complexity spectrum. It’s a sequence of logic tests and randomization events:
- First, set the priority level of the entry groups. Oh, by the way, the priority level of the group might be based on the priority level of the highest priority member of the group, or the lowest, depending on the organization. In the following steps, the programming must then handle the highest priority groups first.
- Remember, of course, that the programming must treat entry groups as a group of competitors/events to move together.
- Next, take the highest priority groups, randomize their order within the top priority, and attempt to place all the competitors, in all of their events, into the performance of the group’s first preference. Then repeat for the next entry group in the highest priority level. If at any point, any competitor within the group, for any event, can not be placed into the first performance preference, then the software attempts to place the group in their second preference. This need to take into account the limits in the number of competitors that can be placed in an event, in a performance. If a limit is reached, for any competitor, for any event, then the entire group can not be placed in that performance. If the group is excluded from both of their performance preferences, they are drawn out of the rodeo.
- Continue attempting to place groups, working from highest priority level to lowest priority, testing preferences and maximum limits, until all entry groups have been handled.
- Once all the entry groups that can be placed, have been placed into the rodeo draw, go back to each event, and each performance, and randomize the run order.
Let’s just say that the programming wasn’t done in a day. What is satisfying, is that despite all that complexity, all that logic, all the sorting, comparisons, etc. that need to be done, pushing the Generate a Draw button will produce a draw in under 30 seconds.