Ok trying to explain again:
I bring with me: My key and my "computer". The computer can be any device with a voting software, where the client end is open specification so the computer can be a cell phone, table, laptop, SDC based thing or whatever. The idea being that there will be many implementations and anyone who cares enough can code their own.
The officials verify who I am and direct me to the voting booth
I connect my computer via some standard cable to the voting machine.
The voting machine sends me a plain text random number "serial number" and the same number along with some other information encrypted with their key(or actually one of really many keys).
My program takes that plain text number and stores it.
My program will then take my vote, encrypt it along with some other data. And then combine my plain text vote, my encrypted vote(+identifying info) and their encrypted serial number(+identifying info) and then calculate check sum on the whole thing, storing the checksum.
It will then transmit my vote to the voting machine.
The voting machine will then show what I voted(the public part), the "serial number" and the checksum they calculated(and likely somewhere on the whole thing if I want to see it) and I should then verify that the vote and the checksum are the same as on my own screen.
After I press of the vote is then sent away.
All such votes are then collected and you can connect to a web server where all such are displayed and you can either get the whole list or just a single vote based on the serial number.
The information there that is thus available for everyone is serial number+vote+encrypted gibberish+checksum
Thus anyone can count the public votes and you can check your own vote by checking the public vote based on the number you have stored and then comparing the gibberish and checksum to your gibberish and checksum and if need be unencrypt your hidden vote and compare.
If there is then later a question of tampering, then I can verify my own vote and if I there is need to show that it was indeed the vote then as example a court appointed panel/person can then with me do the following:
I will give them my key and they will give me the key that corresponds to that serial number.
Thus both can then decrypt first my vote to see that the vote outside was the same as inside and then use the other key to decrypt the other blob inside that should contain the serial number.
And that idea might well still have some holes, but if you do your flip of 50% probability of me being republican as in your example I then have 50% chance of noticing your algorithm and if while a single case of such might become a "he says she says thing" like "there is a bug at your end" or whatever the skin doctors come up with, a pattern like that will be readily apparent even if only a fairly low number of people check their votes(and because of the fanaticism of some people when it comes to politics and the paranoia bout technology quite many non geek people will check I think, some using several programs..)
And yes I know the practical problems of making all that actually work are not trivial because of people...
But my point above is not to suggest that exactly that system has to be used, but a system where both parties keys are used to encrypt the thing and both parties can thus only decrypt one layer and then putting it all in public with the otherwise anonymously but with a reference you have along with the public vote and checksum allows for checking.
Will something like that be implemented? likely not.. as people like the current machines where cheating on the system side is easy it seems...