I've been doing some random tables lately to help making life easier south of the GM screen; I've got character concepts, techniques and forms, personality traits, hermetic houses... but I didn't have characteristics, and I thought "let's give it a try".
At some point in the past I did have a random characteristics generator, but it ended being a table with a over a million rows (eight cars, ranging from -5 to +5) and some odd constraints to keep the chars costs being mostly 7, and maybe 10 or 4 (or 13 or 1...) with relevant virtues or flaws and such: not something you want to print on a table anyway.
So I thought about making things simpler by:
- Limiting the characteristics cost to 7 points. I'm assuming here that Improved / Weak Chars are relatively uncommon, and also can be applied on the fly if desired.
- Limiting the values to the -3 / +3 range. Also assuming that Great / Poor Char is uncommon and can be improvised if needed.
- Not assigning a value to each specific characteristic, but returning just a list of the values in descending order. This actually seems a nice thing to have, because the same set of random values could work for the common magus, or king, or craftsmen, or beggar or whatever by flipping the values to fit their most relevant characteristics, sinking the lower values in their less useful ones and all that we do all the time when creating a character anyway.
So I'm going after a lists that looks like {+3, +1, 0, 0, 0, 0, 0}, {+2, +2, +1, 0, 0, 0, 0}, {+2, +2, +2, +1, +1, 0, -1, -2}, and so on. And then I'm trying to figure out a way to get them at random, assigning a higher chance to the least "max-min"-ed ones (this is, I'm trying to make {+3, +3, +3, +3, +1, -3, -3, -3} something that rarely happens).
Starting with the list of possible combinations, it turns out that there are just 71 of them! Which was actually something quite surprising for me.
I didn't know where even to start to model that as a combinatory problem with the cost restrictions (though I'd be dying to see it if anybody can come up with that), so what I did was to brute-force it asking my dear MySQL database to just get the number (I like to think I treat that server as mercifully as any Tytalus master would treat his apprentice), by saying "Get me eight numbers from -3 to +3, each one being smaller than the other, and with the triangular value of each one adding up a total of 7". I'd add the code in a reply below in case anyone is interested, wants to play with it or sees a blatant error on it.
Now I think that list is interesting because 75% of the combinations have on characteristic (at least) at +3, and a 41% of them have a characteristic at -3. As I said above I'd love to see these possibilities as more uncommon, to have characters with a more normalised values around 0's, but there are only 13 rows with a higher value up to +2 and a lower one down to -2. So I added some weighting values to each row, modifying its frequency so for example only 0.5% of the randomly generated players can get that hideous {+3, +3, +3, +3, +1, -3, -3, -3} combination, but a 4% of them will get a {+2, +2, +1, +1, +1, +1, 0, -2}. These were put also to make it possible for everything to sum up to a value I could roll on a D1000.
So I got this.
Roll | {Characteristic values} | Freq. |
---|---|---|
001-040 | {+1, +1, +1, +1, +1, +1, +1, 0} | 4,0% |
041-080 | {+2, +1, +1, +1, +1, 0, 0, 0} | 4,0% |
081-120 | {+2, +1, +1, +1, +1, +1, 0, -1} | 4,0% |
121-160 | {+2, +2, +1, 0, 0, 0, 0, 0} | 4,0% |
161-200 | {+2, +2, +1, +1, 0, 0, 0, -1} | 4,0% |
201-240 | {+2, +2, +1, +1, +1, 0, -1, -1} | 4,0% |
241-280 | {+2, +2, +1, +1, +1, +1, 0, -2} | 4,0% |
281-315 | {+2, +2, +2, 0, 0, 0, -1, -1} | 3,5% |
316-350 | {+2, +2, +2, +1, 0, -1, -1, -1} | 3,5% |
351-385 | {+2, +2, +2, +1, 0, 0, 0, -2} | 3,5% |
386-420 | {+2, +2, +2, +1, +1, 0, -1, -2} | 3,5% |
421-440 | {+2, +2, +2, +1, +1, +1, +1, -3} | 2,0% |
441-475 | {+2, +2, +2, +2, 0, -1, -1, -2} | 3,5% |
476-510 | {+2, +2, +2, +2, +1, 0, -2, -2} | 3,5% |
511-530 | {+2, +2, +2, +2, +1, 0, 0, -3} | 2,0% |
531-550 | {+2, +2, +2, +2, +1, +1, -1, -3} | 2,0% |
551-570 | {+2, +2, +2, +2, +2, -1, -1, -3} | 2,0% |
571-590 | {+2, +2, +2, +2, +2, +1, -2, -3} | 2,0% |
591-600 | {+3, +1, 0, 0, 0, 0, 0, 0} | 1,0% |
601-610 | {+3, +1, +1, 0, 0, 0, 0, -1} | 1,0% |
611-620 | {+3, +1, +1, +1, 0, 0, -1, -1} | 1,0% |
621-630 | {+3, +1, +1, +1, +1, -1, -1, -1} | 1,0% |
631-640 | {+3, +1, +1, +1, +1, 0, 0, -2} | 1,0% |
641-650 | {+3, +1, +1, +1, +1, +1, -1, -2} | 1,0% |
651-660 | {+3, +2, 0, 0, 0, 0, -1, -1} | 1,0% |
661-670 | {+3, +2, +1, 0, 0, -1, -1, -1} | 1,0% |
671-680 | {+3, +2, +1, 0, 0, 0, 0, -2} | 1,0% |
681-690 | {+3, +2, +1, +1, -1, -1, -1, -1} | 1,0% |
691-700 | {+3, +2, +1, +1, 0, 0, -1, -2} | 1,0% |
701-710 | {+3, +2, +1, +1, +1, -1, -1, -2} | 1,0% |
711-720 | {+3, +2, +1, +1, +1, +1, -2, -2} | 1,0% |
721-725 | {+3, +2, +1, +1, +1, +1, 0, -3} | 0,5% |
726-735 | {+3, +2, +2, -1, -1, -1, -1, -1} | 1,0% |
736-745 | {+3, +2, +2, 0, 0, -1, -1, -2} | 1,0% |
746-755 | {+3, +2, +2, +1, -1, -1, -1, -2} | 1,0% |
756-765 | {+3, +2, +2, +1, 0, 0, -2, -2} | 1,0% |
766-770 | {+3, +2, +2, +1, 0, 0, 0, -3} | 0,5% |
771-780 | {+3, +2, +2, +1, +1, -1, -2, -2} | 1,0% |
781-785 | {+3, +2, +2, +1, +1, 0, -1, -3} | 0,5% |
786-795 | {+3, +2, +2, +2, -1, -1, -2, -2} | 1,0% |
796-800 | {+3, +2, +2, +2, 0, -1, -1, -3} | 0,5% |
801-810 | {+3, +2, +2, +2, +1, -2, -2, -2} | 1,0% |
811-815 | {+3, +2, +2, +2, +1, 0, -2, -3} | 0,5% |
816-820 | {+3, +2, +2, +2, +2, +1, -3, -3} | 0,5% |
821-830 | {+3, +3, 0, -1, -1, -1, -1, -1} | 1,0% |
831-840 | {+3, +3, 0, 0, 0, -1, -1, -2} | 1,0% |
841-850 | {+3, +3, +1, 0, -1, -1, -1, -2} | 1,0% |
851-860 | {+3, +3, +1, 0, 0, 0, -2, -2} | 1,0% |
861-865 | {+3, +3, +1, 0, 0, 0, 0, -3} | 0,5% |
866-875 | {+3, +3, +1, +1, 0, -1, -2, -2} | 1,0% |
876-880 | {+3, +3, +1, +1, 0, 0, -1, -3} | 0,5% |
881-885 | {+3, +3, +1, +1, +1, -1, -1, -3} | 0,5% |
886-890 | {+3, +3, +1, +1, +1, +1, -2, -3} | 0,5% |
891-900 | {+3, +3, +2, 0, -1, -1, -2, -2} | 1,0% |
901-905 | {+3, +3, +2, 0, 0, -1, -1, -3} | 0,5% |
906-910 | {+3, +3, +2, +1, -1, -1, -1, -3} | 0,5% |
911-920 | {+3, +3, +2, +1, 0, -2, -2, -2} | 1,0% |
921-925 | {+3, +3, +2, +1, 0, 0, -2, -3} | 0,5% |
926-930 | {+3, +3, +2, +1, +1, -1, -2, -3} | 0,5% |
931-935 | {+3, +3, +2, +2, -1, -1, -2, -3} | 0,5% |
936-940 | {+3, +3, +2, +2, +1, -2, -2, -3} | 0,5% |
941-945 | {+3, +3, +2, +2, +1, 0, -3, -3} | 0,5% |
946-955 | {+3, +3, +3, -1, -1, -2, -2, -2} | 1,0% |
956-960 | {+3, +3, +3, 0, -1, -1, -2, -3} | 0,5% |
961-970 | {+3, +3, +3, +1, -2, -2, -2, -2} | 1,0% |
971-975 | {+3, +3, +3, +1, 0, -2, -2, -3} | 0,5% |
976-980 | {+3, +3, +3, +1, 0, 0, -3, -3} | 0,5% |
981-985 | {+3, +3, +3, +1, +1, -1, -3, -3} | 0,5% |
986-990 | {+3, +3, +3, +2, -1, -1, -3, -3} | 0,5% |
991-995 | {+3, +3, +3, +2, +1, -2, -3, -3} | 0,5% |
996-000 | {+3, +3, +3, +3, +1, -3, -3, -3} | 0,5% |
And I thought about sharing, in case anyone is interested on it.