Sure, but I think it's all unnecessary. Why not just call SecureRandom 12 times to pick 12 random numbers (range 0 to 1625 ). You can use that to choose 12 random words from array. That will be pretty simple and no security/implementation complications. The words would be chosen randomly and entropy would be 128-bit.
Thats how I did it already. Your approach intrigues me because I don't know how to do that, I dont like that
Microsoft patent actually describes how to represent any number as words (1626)
https://www.google.com/patents/US5892470 In this example, the number is 3,481,269,321. The table of words contains 1626 words, which are indexed from 0 to 1625. To encode this number, the ME system divides the number by the radix, 1626, which yields an integer quotient of 2,141,002 and a remainder of 69 (line 102). The ME system then uses the remainder as an index into the table and retrieves the indexed word, which is "BUS." The system sets the mnemonic encoding to that indexed word. The ME system then divides the integer quotient by the radix, 1626, which yields a new integer quotient of 1316 and a remainder of 1186 (line 103). The ME system then uses the remainder 1186 as an index into the table and retrieves the indexed word, which is "ART." The ME system then adds the word as the left-most word of the mnemonic encoding, which is now "ART BUS." The ME system then divides the integer quotient by the radix 1626, which yields a new integer quotient of 0 and a remainder of 1316 (line 104). The ME system uses the remainder 1316 as an index into the table and retrieves the indexed word, which is "DRUM." The ME system then adds the word "DRUM" as the left-most word of the mnemonic encoding, which is now "DRUM ART BUS." Since the integer quotient is zero, the encoding is complete. To decode the mnemonic encoding of "DRUM ART BUS," the ME system initializes the number that is represented by the mnemonic encoding to zero (line 105). The ME system then removes the left-most word from the encoding, which is "DRUM." The ME system then determines the index for that word in the table. Since the index of that word is 1316, the ME system sets the resultant number to the value 1316 (line 106). The ME system then again removes the left-most word of the current encoding, which is "ART." The ME system then determines the index for that word in the table, which is 1186. The ME system then sets the value of the resultant number to 2,141,002, which is the sum of the index (1186) and of the resultant number (1316) times the radix (1626) (line 107). The ME system then removes the left-most word from the encoding, which is "BUS." The ME system then determines the index of that word in the table, which is 69 (line 108). The ME system then sets the resultant number to 3,481,269,321, which is the sum of the index (69) and of the resultant number (2,141,002) times the radix (1626). Since the encoding is now empty, the current value of the resultant number represents the number for the mnemonic encoding. Each word in the mnemonic encoding corresponds to a radix position in the numbering system. For example, the mnemonic encoding "DRUM ART BUS," which has indices 1316, 1186, and 69, respectively, represents the number that is the result of 1316 * 1626.sup.2 +1186 * 1626.sup.1 +69 * 1626.sup.0.