Well, I don't know if this will help you people, but my final conclusion is a mix of what I had with some of your suggestions.
I solved the problem by making the following assignment:
true = random int PRIME number
false = random int number (not prime)
And now the obvious question comes:
Q: If I am selecting random numbers, how do I guarantee that they are not repeated without saving each generated number?
A: I convert the random number to bytes, and mix it with an ID of the same table. This way i doesn't matter if I generated a random repeated number because when I mixed it with the ID (that is unique) I messed up the output.
Calculating primes however can be quite heavy, so I will post here a small part of my report that has other suggestions:
Although we selected the property of being prime as an equivalent to the boolean of true, we could have also used other properties, such as:
<li>
<ul>
Representing a true boolean by a random odd number and
a false boolean by a random even value
</ul>
<ul>
Representing a true boolean by a sequence of numbers
that belongs to PI and a false boolean by a random
number sequence that doesn't belong to PI
</ul>
</li>
This has been quite an interesting and unexpected challenge to me. It never occurred to me that something so simple could require such ingenuity.
I hope my solution helps you all, and if you love cryptography, give the project a look :P