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.
Simple EXE copy for installation.
Running Prize Select, about to give away a car. Click for larger image. |
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.
2022.05 Minor update: Program re-compiled using Visual Studio 2022 and .dotNet 4.8
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 "Person's 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 (when they may have already won another prize).
- 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 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. You don't have to record the numbers!
When entering his purchase, 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 x15"
Use this method even if you are using numbered tickets. With this, there is no need to track the actual 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.
- Or, tickets can be entered by Number (tickets 1200-1476).
- 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 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 (this GIF animation is too slow and does not progress the way the real effect does.... )
- A winning numbered-ticket (#2319), and a winning ticket-by-name (Nancy) looks like this:
- Optional Prize lists can be built ahead of time with pictures acting as advertisements, independently of the contestant lists.
Custom backgrounds, with your company's livery or other graphics is supported.
Each prize can have a graphic, or it can default to a text-version. Here is a different wallpaper, along with a now-dated Playstation prize:
Different Wallpaper, drawing for a Game Console. Winner not yet awarded.
- Prizes can be with and without illustrations. Those without illustrations are displayed as text in the center of the screen.
- Prizes can be raffled in a preset order or prizes can be selected at-will from a list, at the whim of the Prizemaster.
- 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 a 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.
Downloading:
Follow these steps for a more professional installation:
From Keyliner's public GDrive, click this link and download to a local temp or download directory. Do not download directly into ProgramFiles.
Download Link: Version 1.08
Folder link: Folder Link - contains standalone .exe and other downloads.
File Link: AllFilesInOne.zip - includes sample wallpaper, etc. Recommended.
prizeselect.exe MD5 check:
01-c1-81-be-8d-23-f6-a1-f4-a8-71-9e-a2-0d-a1-c5
SHA-256:
fcc8b435d84220a9dfb3ea6f24de85dc84a7141685de61ad4407c5e0fa843a78
When downloading, different browsers behave differently.
You will be prompted the file cannot be scanned. Click "Download anyway"
Microsoft Edge:
Prompts "DirectoryPulse.exe" was blocked because it could harm your device.
"Click See More" and allow the download. With Edge, the file will appear in your Downloads directory with a random name, "Unconfirmed 780359.crdownloaded" (name varies).
Rename the file to "DirectoryPulse.exe".
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.
B. Mark the program as safe-to-run:
(This step may not be needed if downloaded by Edge and you clicked "More / Download Anyway")
Using File Explorer, right-mouse-click the downloaded (and re-named) .exe
Select "Properties"
Check [x] Unblock. This removes the "mark of the web."
Click for larger view |
* Only do this if you trust
keyliner *and* only if downloaded from keyliner's public GDrive.
If
"Unblock" is not visible, it has already been unlocked (by Microsoft
Edge).
Once [x] Unblocked is clicked, this security menu disappears.
C. Create a Program folder to hold the program:
Using File Explorer, open folder C:\Program Files,
Create a folder C:\Program Files\PrizeSelect
D. Copy the .exe to ProgramFiles\PrizeSelect:
Using File Explorer,
Copy/paste the .exe from the temporary/download folder
to C:\Program Files\PrizeSelect
Do this copy as a two-step,
copying from the download folder into Program Files. Windows security
will not let you download directly into Program Files (technically, you
will not be able to remove the "mark of the web" if downloaded directly
into Program Files).
E. Create a Start Menu Tile:
Using File Explorer, in C:\Program Files\PrizeSelect
Right-mouse-click the executable and "Pin to Start"
The program is ready to run. See icon on Start Menu.
I
recommend downloading the Installation/User-guide (PDF) and wallpaper
files -- especially the default wallpaper. The "All-in-one zip" contains the executable, several wallpapers and complete documentation
and sample files. It is a small download.
in order to give the program good "curb-appeal"
Try it out:
You can literally download the EXE; double-click it and start using it now, for a quick test. It will prompt for a ticket-number range and will assume an 'unspecified prize list.' Begin drawing samples within 20 seconds.
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.
Feature Details:
Contestant names can be copied and pasted into a configuration file, 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):
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, along with a different wallpaper:
Standard Raffle Ticket Drawings:
Prize Selections can be started in an ad-hoc mode (on the fly, without 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 an inventory screen, in this case, showing numbered tickets instead of names:
Tickets can be entered by name, e.g., John Smith, or John Smith x15 (purchased 15 tickets). You cannot mix the two different types of data-entry.
From the download library, be sure to download the 50-page PDF User's Guide. This explains all features, including how to use graphics with the prizes, and how to pre-load the contestant lists.
Version History:
Full details in the Installation PDF guide.
2022.0528
1.08 Recompiled with Visual Studio 2022 Dot Net 4.8. No other changes.
2015.1220
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.
1.05 Added Slot-machine effect while names are being drawn.
Changed the "List All" page, adding more options.
Improvements in documentation.
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.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.02 Initial Release
Search Amazon for "War and Peace Programming" - Programming in C#. These are keyliner's books, written for beginning programmers.
Related articles and links:
Download Link:
Folder link: Folder Link This includes the all-in-one .zip
File Link: AllFilesInOne.zip
PrizeOrama - Raffle-ticket selection in Excel
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
ReplyDeleteDear 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.
ReplyDeleteAdditionally, I have since improved the PDF documentation; it flows better and has more examples.
John Smith x5:
ReplyDeleteCorrection: 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.
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
ReplyDeletewould 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
Version 1.06 added a delay and flip A-z, adding excitement. I call this a slot machine effect.
DeleteVariable 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.
Hi,
ReplyDeleteI 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.
Andy,
ReplyDelete(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.
Andy, More on this
ReplyDelete(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.
Hello! Just wondering if this program is still being updated?
ReplyDeleteYes. 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.
DeleteHi Tim,
ReplyDeleteIs 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!
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.
ReplyDeleteI 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.
Hi Tim,
ReplyDeleteIf 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! =)
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.
DeleteSo 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.
DeleteCloser 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.
I will look at this in a few days, but my initial thinking is this:
DeleteNot 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.
Please re-test with version 1.07. I made changes to the retry algorithm to more closely match what I said above.
DeleteI would still entertain that new switch. What do you think? Or, is my routine now more understandable?
Hi Tim,
DeleteI 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!
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.
DeleteYou 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.
Tim,
ReplyDeleteAlso 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.
PrizeSelect Version 1.07 released!
DeleteVersion 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.
ReplyDeleteFabulous new documentation.
C.Bari's wrote, commenting where some of the graphic elements were.not visible on the screen (next prize arrow keys, etc.).
ReplyDeleteMy 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.
C.Bari's wrote, commenting where some of the graphic elements were.not visible on the screen (next prize arrow keys, etc.).
ReplyDeleteMy 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.
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.
ReplyDeleteHi Tim,
ReplyDeleteCan 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!
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.
DeleteDear Tim,
ReplyDeleteThe 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,
Download link fixed
ReplyDeleteHi 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 :)
ReplyDelete