Sunday, December 20, 2015

PrizeSelect Raffle Program - downloadable

Download: Free raffle ticket, prize drawing program with no registration or trials; a simple .exe. NewVersion 1.07, updated 2015.12.20 with user-changeable wallpaper and a variety of other options.  This replaces and dramatically improves on an earlier program written in Excel (PrizeOrama).

PrizeSelect is a Windows raffle program that randomly selects winners from a pool of contestants and displays the results in real-time on the screen.  Fully configurable, with graphics, wallpapers, prize-lists and numerous options.

Free to download.
No registration, no nagware, no advertisements, no installation.
Simple EXE copy for installation.

Running Prize Select, about to give away a car.  Click for larger image.

PrizeSelect understands how a raffle operates
- especially in front of a live audience

It is designed to be used in front of a live audience and can handle either raffle-tickets (numbers) or people names.  The presenter has great flexibility in changing which prizes are awarded, in what order, and you can control repeat-winners and other aspects of a raffle.  This program knows how raffles should be run.

Small Program, Many Features:
  • Free for all personal and commercial use.
    No registration or licensing. 
    No Adware
    No bull
  • No hassle installation:
    Download/Copy the EXE along with a couple of graphics for the wallpaper.
    Run the exe.  An ad-hoc raffle is ready to begin.
  • Supports instant ad-hoc (on-the-fly) raffles in either a numbered-ticket or "named" mode.  Or, with a little setup, the raffle can be configured, with all contestants and prizes pre-loaded via a simple ascii-text configuration file.  

    Multiple configuration files can be used, each with separate prize-lists and other criteria.
    Once the raffle starts, contestants can be added on-the-fly
  • Winners can optionally be restricted to one (1) win per contest. 
    Changeable on a prize-by-prize basis or at the whim of the Prize Master.

    For example, when giving away minor prizes, only allow one win per person, but for the Grand Prize, let all contestants be eligible. One mouse-click changes this mode.
  • As names/tickets are drawn, you choose whether to "accept" them as a winner (for a 'Must be present to win' raffle) or if the winner declines the prize, simply draw a new name. Declined names are eligible to win the next prize.

  • Contestants can be unobtrusively removed during an in-progress raffle.
  • Jazz-up the program with user-defined wallpapers.  In addition to the default blue wallpaper, illustrated above, you can make your own, company-branded wallpapers.  Several are illustrated in this article. 
  • Fully documented with a 50-page PDF   

Ticket Sale Features:
  • Contestants can be entered into the raffle either by selling "raffle-tickets," typically from a roll of numbered tickets, or more commonly by "Name," as in "John Smith."

  • Numbered Raffle tickets can be entered en-mass, as one transaction, moments before the raffle starts. For example, you could enter tickets "1000-1546" and the raffle would choose between these numbers.

    Tickets can be entered from multiple, non-intersecting dis-contiguous rolls. Additional tickets can be added after the raffle begins.
  • Of particular interest, numbered tickets can (and should be) sold by "Name."  (using the "Names" method).  For example, John Smith may have purchased 15 numbered tickets. When entering his purchase, you could type "John Smith x15" -- giving Mr. Smith 15 chances (15 copies of his name in the contestant list).  Or, if multiple John Smiths, "John Smith of Accounting"

    Use this method even if you are using numbered tickets.  With this, there is no need to track the ticket numbers. This is a popular way to use the program with medium to small groups.
  • If Mr. Smith later returns to buy 5 more tickets, enter the second transaction ("John Smith x5").  No need to look up the previous purchase. Mr. Smith would now have 20 chances to win.

  • Contestants can also be entered via a previously built configuration file.

    For example, for a company party, you could import all employee names and the prizes before the gathering.  Then, after the party starts, other names can be added ad-hoc during the raffle. The program automatically warns if duplicate names are found.

    All contestants (or tickets) can be edited and viewed from within the raffle program.

  • As names are drawn, the chosen name rolls like a slot machine.  The actual effect looks neat.  Here is a GIF animation that lamely tries to simulate the event (the GIF is too slow and does not progress the way the real effect does.... )

  • A winning numbered and name-draw looks like this:

Prize-List Features:
  • Optional Prize lists can be built ahead of time with pictures acting as advertisements, independently of the contestant lists.  Here is a different wallpaper, along with a Playstation prize:

    Different Wallpaper, drawing for a Game Console.  Winner not yet awarded.

  • Prizes without illustrations are displayed as text in the center of the screen.
  • Prizes can be awarded in a preset order or prizes can be selected at-will from a list.
  • Unannounced, unplanned, ad-hoc prizes can be awarded via an "unspecified prize." The Prize-master can switch between the original prize-list and ad-hoc prizes with a mouse-click.

  • Prizes can optionally and automatically move to the next "available prize" as winners are chosen -- or the next prize can remain hidden until the Prize-master chooses to expose it.

  • Awarded prizes are automatically removed from the Prize List so there is no risk of accidentally awarding twice.

  • Accepted winners are recorded to an external transaction file for later reporting. In the event of a power failure, results are safely recorded. The original and modified contestant list is backed up with each new ticket transaction and can be recovered up to the point of failure within moments.

  • If a predetermined prize-list is not available, or if all "known" prizes are exhausted, the program switches to an "unspecified prize mode" without interruption. This allows the Prize Master to give away ad-hoc prizes, as Prize-masters and MC's often like to do.


Download PrizeSelect.exe from Keyliner's Public GDrive link for free.
No registration required.

Link: Download PrizeSelect

This link opens a directory, which includes the executable, wallpapers and instruction guide.  Each can be downloaded separately or download the all-inclusive .zip file.  To download, other-mouse click the file's name.

              Note:  prizeselect.exe MD5 check:

I recommend downloading the Installation/User-guide (PDF) and wallpaper files -- especially the default wallpaper.  The All-in-one zip file contains the executable, several wallpapers and complete documentation and sample files.  Even at that, it is still a small download. 

Most of the features in this program are somewhat hidden
 in order to give the program good "curb-appeal"
The PDF demonstrates various scenarios on how to best use the program,
along with a list of helpful tips and tricks

You can literally download the EXE; double-click it and start using it now, for a quick test.

Because it is being downloaded from the web, Windows will report the program comes from an untrusted source (e.g. 'The mark of the web').  If you trust my program, let the program run.  I have considered purchasing a Digisign certificate, but the cost cannot be justified at $400 per year. 

The remainder of this post highlights some of the most commonly-used features.  The installation PDF has full details, including great examples and best practices. 

More on the Features:

Contestant names can be copied and pasted into configuration files, typically from Excel. Names can also be imported from one or more external ASCII files, allowing automated population. Typically, links are made to external lists, such as club-memberships, school rosters, etc.

Individual names can also be added on-the-fly, as in this screen shot (note the holiday themed wallpaper):

Click image for larger view, "Back" to return

Once names / raffle-numbers are added, the contestant list can be modified with rename, delete and find-duplicates. This is a screen shot showing a contestant list:

Standard Raffle Ticket Drawings:

PrizeSelections can be started in an ad-hoc mode (on the fly, without pre-configuration). This is particularly useful for traditional raffle-ticket drawings where you are using rolled-tickets. Data-entry for the tickets is easy, where you enter all the tickets in one transaction.

Illustrated, tickets #13456 through 13521 are being added in one step:

Multiple ticket ranges are supported, as are multiple rolls and dis-contiguous numbers. Sold tickets can be managed from this inventory screen, in this case, showing numbered tickets instead of names:

Version History:
Full details in the Installation PDF guide.
Program written by Traywolf @ Keyliner.

1.02 Initial Release

1.03 Added support for "Discard All". Added support for non-ranged, single-raffle-ticket data entry. Fixed bug when loading backup.ini files which contained non-ranged numbers.

1.04 Added support for copying Winner list to clipboard. Modified "Autoadvance to next Prize" to behave more smoothly when on an "unspecified prize"; it automatically advances to a new Unspecified prize even if auto-advance is disabled. In practice, this feels more natural during an impromptu prize-give-away.

1.05 Added Slot-machine effect while names are being drawn. Changed the "List All" page, adding more options. Improvements in documentation.

2015.12.20 ---

1.07 Recompiled with Visual Studio 2015.  Added a self-signed certificate, but it will still show as an unknown author.   Everyone clamored for user-defined wallpaper, which was finally added.  Added cool support for changing "One win per contestant" switch, on the fly, controlled by inventory -- this means no more screw-ups by your Prize Master/Master of Ceremonies.  Fixed bug by adding "x5" support in both INI files and in Files=import.text.  Improved font sizes in several areas.  Expanded and enhanced documentation; included new screenshot illustrations.   

If this program has helped you, toss in a buck or two using Paypal.  You do not need a paypal account to do this. 

I have had fun writing this program.  
If you use it, drop me a note and tell me how it went.  
Happy to hear from you whether you donated or not.

Related articles and links:
keyliner PrizeSelect - Download 
PrizeOrama - Raffle-ticket selection in Excel


  1. This is great, I'm going to use it for an upcoming draw. It would be great though, if when drawing, the names 'cycled' before settling on one, to add some excitement

  2. Dear Anon: Your suggestion is a good one and I've added a slot-machine-like roll as the contestant's name is drawn. It was fun to write. Please tell me how you like it.

    Additionally, I have since improved the PDF documentation; it flows better and has more examples.

  3. John Smith x5:

    Correction: the 'x5' syntax works in the online screens, but not in the pre-built ini files, contrary to my installation documentation. I'll have to look at this. Thanks for pointing this out.

  4. hi sir this software is great... i think it would be even better if the first letter flipped / took longer to lock maybe run from a-z first before locking onto the first letter to really build up the thrill

    would you by chance be creating a fullscreen version ?

    also it would be really awesome if we also have the option to use a custom background and define it via the ini file

    1. Version 1.06 added a delay and flip A-z, adding excitement. I call this a slot machine effect.

      Variable wallpaper is being added in version 1.07. I still cannot figure out how to make full-screen work without a lot of coding and object movement.

  5. Hi,

    I downloaded this as it's exactly what I need for a draw, however I have done some tests (before the real draw) and it doesn't seem to be working correctly with mulitple entries.
    I've got people with entries ranging from 1 to nearly 4000, when tested I entered 3 people, two with one entry and the other with 4000. All people seem to win the same amount of prizes, which given the vast difference in entries surely can't be correct? I've said 'NO' to 'allow only one win' and 'YES' to 'Allow duplicate contestants'. Any help would be greatly appreciated as I need to make this draw very soon!

    Thanks. Andy.

  6. Andy,
    (Comment: The program will not work with only one person in the prize list and I believe I trap for this error.)

    Help me understand your test. Are you suggesting one person bought one ticket and two others each bought 4000 tickets? If [x]Allow only one win is checked, the odds of the program finding the remaining person are slim - one out of 8001 tickets.

    The program is cognizant of this possiblity. It works like this: It draws a name and will likely find one-of-4000/8000. It then looks in the winner's list and says, "I already found him; Look again". It will look up to 100 more times, and then would give up, reporting "an entry was not found in a reasonable time, re-run the draw". (assuming [x] Allow only one win was selected).

    This keeps the program from getting in an infinite loop when there are hugely-unbalanced entries, as you are suggesting.

    If [ ]Allow one win is not selected, the two people with 4000 tickets each will likely win all prizes. Again, the odds of randomly arriving at the single-ticket-holder are slim to none.

    In a more normal draw, where entries are more balanced, I think you will find the program works perfectly.

    Statisticians, if they look hard enough, will find a slight non-randomness for the immediate-past winner, especially in small pools. If [ ]Allow one win is unchecked, and the pool is small, say under 100 people, the immediate-past winner has a smaller-chance than normal of winning two prizes in a row. The program sees they won the last draw and it seriptiously discards the second win and draws again. That person, if miracously drawn a third-time in a row would win, but the odds are very slim.

  7. Andy, More on this

    (These scenerios all assumed a named drawing "Bob Smith x20")

    Assume a more normal drawing, where you have 500 people. Say most of the 500 people bought one ticket each, but 10 bought 20 tickets each, for a total of 690 tickets. [x]Allow one win was selected.

    You should find a nice random spread, where the 10 people with multiple tickets have a slightly-better chance of winning. But once they won (say Bob Smith wins), they immediately fall out of any future drawings and they will not affect the odds for the other non-winners.

    Even though they have a (combined 200 additional tickets), the drawing would continue, as-if they were not in the pool (assuming all 10 ultimately won prizes).

    Technically the winning people remain in the pool. The program randomly draws a number, looks at the winner's list, finding "Bob Smith"; discards the draw and draws again, up to 100 times, until it finds a non-winner.

    In practice, this process works very well in pools of 10 to thousands of people.

  8. Hello! Just wondering if this program is still being updated?

    1. Yes. Version 1.07 will be released in a few days. Adding a much-requested feature for user-defined wallpapers. Adding better support for x5-style names in INI and INI-files.

  9. Hi Tim,

    Is there any way that the previous winners can be seen/ shown to the audience after all the raffle has been done?
    And for consolation prizes, like GCs which will be given to 10 to 20 persons, can this be also done in a one prize to 10 winners ratio?

    Many thanks!

  10. In the settings / control screen is a list of all winners. Not pretty, but it is there. Additionally, each winner is written to an ascii text file in the same directory as the program's default folder. You could easily write a program to display them.

    I have another version of the program, which can award the same prize to xx number of people, but it has not made it to production and I do not have an easy way to switch from the original design to this one. In other words, I am not pleased with my first attempt.

  11. Hi Tim,
    If it's not too much trouble, can you add an option for requiring a name to be drawn 3 times to qualify for winning a prize? e.g. each contestant has multiple entries, and upon each drawing, that entry isnt discarded but instead shuffled back into the mix, and another name is drawn, until 10 people who have been drawn 3x each have been picked...So the winners would be the first 10 people to have their names drawn 3x...Do you think that is a more effective way to randomize the winners than your current set up? If you don't think it is, please let me know!

    I appreciate your feedback! =)

    1. I don't see how the math on this would work. Imagine a pool of 50 people, each with one ticket. With 10 prizes offered, the odds of any one person getting three draws would be zero. Perhaps I do not understand your request. You imply the randomization is not good, but I disagree. After many many tests, I am satisfied the randomness is very good.

    2. So to help you understand it, most of the contestants would not have just one ticket in my scenario. If the total tickets were 50, then maybe there would be 4 or 5 people in the drawing total.
      Closer to my reality would be maybe 35 participants with the least amount of tickets per participant being 2 or 3. Let's say the participant with the most amount of tickets has 20, with the total amount of tickets being 115.
      Once a name is drawn it is not discarded but rather mixed in again, and the first 10 names to be drawn 3x will be the winners of the contest. This way even if a participant has less than three tickets entered, they still have a chance to win if their name gets drawn 3x.
      Does this make sense to you, and if so, do you think it's better than your current setup? I'm asking your opinion because this request isn't from myself, rather it was requested that I find a way to make it happen as such. What is your opinion of this method?
      Thanks in advance.

    3. I will look at this in a few days, but my initial thinking is this:

      Not well documented is a prize-select feature that on a random draw, if the new winner is the same name as the immediate previous winner, the program serreptitiously draws another name (rather than let the same person win twice in a row). If on the second (secret draw), the same person wins again, the program rolls the dice and gives something like a 30% chance they lose (with a 70% chance it will accept the win). If the same person wins on a third draw, they win the prize.

      (Noted: Obviously, you have unchecked the "OnlyAllowOneWin" option -- allowing a previous prize winner to win another prize.)

      Thus, in an unbalanced load, my routine would look mathematically squirrelly.

      Imagine 9 contestants, each with one ticket and then a 10th contestant with 5000 tickets. PrizeSelect would attempt 3 times on each draw to find another person, trying moderately hard to not award the second prize to that greedy 10th person.

      Similarly, if you have "OnlyAllowOneWin" (which you don't) and that person had 5000 chances, the program would try 100 times to find a new name (having been forced to not re-use/re-win that person). On the 100th attempt, it would display an error "Could not find a winner. Try again."

      ? Would it help if we had a switch called "DisableRetryEvents" (essentially: Enable a pure random draw)? This would be easy to implement.

      I don't want to give the impression that the program is not random - it really is, but I admit I cheat a smidge when the same person wins twice in a row.

      I've seen too many audiences complain when someone wins too often.

      * In need to study your most recent reply before I can answer definitively. I've run out of time this week. Documenting took most of the day today.

    4. Please re-test with version 1.07. I made changes to the retry algorithm to more closely match what I said above.

      I would still entertain that new switch. What do you think? Or, is my routine now more understandable?

    5. Hi Tim,

      I appreciate your feedback, and your willingness to accommodate me!
      My situation is a bit different from your run-of-the-mill prize drawing in the sense that, the "tickets" in the contest drawing are more like "points", where they are not purchased, but instead awarded to each participant for their hard work (e.g. 2 tickets or points per sale)
      Because of this, I do not want to limit or reduce the chance of those with a lot of tickets to win again, as I want to reward those who have done the most activity, over those who have done very little.
      This is the reason why I need the program to pick a name three times before they are considered a winner, so that it reduces the chance for someone with very low sales activity to win a prize over someone with a lot of sales activity.
      Also, I would need the program to keep track of all of the names that were drawn, not just consecutive back-to-back winners, as the first 10 people to have their name picked three times would be the 10 winners.
      Again, it's not your average situation, but I appreciate any help you can give me!

    6. Your request is interesting, but it exceeds the goal of my program. Adding a feature like this would complicate the logic and configuration, and even you would admit, for a limited audience.

      You might consider the Prize Orama spreadsheet this post references. I wonder if the spreadsheet could be coaxed into doing this.

      Imagine 3 columns where the name is being drawn. If all three columns show the same name, you would have a winner. Take a peek at that.

  12. Tim,
    Also when I put x5 after a person's name in the .ini file, the program displays the name as "name x5" in only one entry, instead of outputting that name 5 times subsequently, as it does in the ad-hoc option.

  13. Version 1.07 has been released. Support for x5 entries in INI files. Support for user-defined wallpapers. New feature allowing prize-by-prize changes to "OnlyAllowOneWin" per contestant.

    Fabulous new documentation.

  14. C.Bari's wrote, commenting where some of the graphic elements were.not visible on the screen (next prize arrow keys, etc.).

    My initial response:

    I think I see the problem. The screen is maximized and the missing elements positioned themselves, below your task-bar. In the upper-right corner (the program's title bar), click the center resize. Restore button.

    I happened to see similar problem on my new Lenovo laptop, where the screen resolution is set to 3200 pixels. And windows display control panel is set to magnify 250%.

    The wallpaper does not scale. You could simply draw another wallpaper at the larger pixel size.

    Could you confirm my observation?

    Temporary work around is to run in a window, not maximized.

    I will have to revisit my scaling logic, inlight of a non 100% scaling.

  15. C.Bari's wrote, commenting where some of the graphic elements were.not visible on the screen (next prize arrow keys, etc.).

    My initial response:

    I think I see the problem. The screen is maximized and the missing elements positioned themselves, below your task-bar. In the upper-right corner (the program's title bar), click the center resize. Restore button.

    I happened to see similar problem on my new Lenovo laptop, where the screen resolution is set to 3200 pixels. And windows display control panel is set to magnify 250%.

    The wallpaper does not scale. You could simply draw another wallpaper at the larger pixel size.

    Could you confirm my observation?

    Temporary work around is to run in a window, not maximized.

    I will have to revisit my scaling logic, inlight of a non 100% scaling.

  16. Wow thanks! I had a custom scale of 175% and that was the problem. The first image I sent wasn't maximized, just cropped. When I did maximize it, the buttons at least appeared but they were all over the place. I would have never figured out the scaling.

  17. Hi Tim,

    Can I request for a copy of the source code? I want to change the text size of the winner and probably increase the duration of the slot machine effect. Also reposition the image display.

    Thank you!

    1. I'm sorry, but I am not distributing the source. I keep pondering about ways to variablize the objects on the screen but have not succeeded yet. Thank you for asking.

  18. Dear Tim,

    The slot machine effect is great. However, it is very easy to predict the winner within the first few letters getting locked.

    Would it be possible for the whole name to be shuffled with the other eligible winners before it gets locked. That would make it much more exciting!

    Thanks & Kind Regards,

  19. Hi bro, your program was great and useful and Interesting, I was wondering what method you use behind for the chances in this selection. Hoping for your reply :)


Comments are moderated and published upon review.