fire cloud
fire cloud

Reputation: 45

What's the proper way to generate 6 characters alphanumeric code in which sum of all characters equals 9? (Voucher code generator)

My first idea was to make an array/list that has values assigned to each character. So for example:

array[0] =' 0'

array[10] = 'A'

[...]

Then code would pick a random number y between [0,x] for slot 1. For next slot [0,(x-y)] etc. When y <= 0 then fill rest of the slots with '0'.

Would that be enough for a simple voucher code generator? (It's not my decision to make encryption with this rule)

I am worried that sum of 9 is quite low for 6 character code, letters won't be used at all since they all have value over 9. To prevent situation like this: 540000, 630000, 180000 Should I make chance of '0' to appear more?

What do you guys think about it? Maybe you could also suggest some other way of doing this.

@Edit

Examples:

112320 = 1+1+2+3+2+0 = 9 Valid code, sum equals 9

000900 = 0+0+0+9+0+0 = 9 Valid code, sum equals 9

003015 = 0+0+3+0+1+5 = 9 Valid code, sum equals 9

A0012B = 10+0+0+1+2+11 = 24 Invalid code

Upvotes: 1

Views: 370

Answers (1)

Dominique
Dominique

Reputation: 17551

Let's say that the function Rand(n) creates a random integer number that can go from 0 up to n (n included), then you can do the following:

Sum = 0;
A[0] = Rand(9);
Sum += A[0];
A[1] = Rand(9 - Sum);
Sum += A[1];
A[2] = Rand(9 - Sum);
Sum += A[2];
...

I just wrote this down very quickly, I didn't check the boundaries, but such an algorithm should do the trick.

Upvotes: 3

Related Questions