Random Number Generation Avoiding Human Error in the Keyboard

Click For Summary
SUMMARY

The discussion centers on generating random alphanumeric serial numbers that avoid adjacent characters on a keyboard to minimize human typing errors. Participants suggest using methodologies like Hamming Code for error detection and checksum digits for validation. The conversation highlights the challenges faced by a company transitioning to a new part numbering system while dealing with over 500,000 entries in SAP. A proposed solution includes implementing a checksum mechanism to detect typing errors effectively.

PREREQUISITES
  • Understanding of Hamming Code for error detection
  • Familiarity with checksum algorithms for data validation
  • Knowledge of alphanumeric serial number generation techniques
  • Experience with SAP systems for material entry
NEXT STEPS
  • Research Hamming Code implementation for error detection
  • Learn about checksum algorithms and their applications in data integrity
  • Explore alphanumeric serial number generation strategies
  • Investigate SAP customization options for part number management
USEFUL FOR

Developers, data integrity specialists, and SAP users looking to improve input accuracy and reduce human error in part number entry systems.

chris288
Messages
3
Reaction score
0
Hi All

Im hoping I am in the right area to ask this?!?

Im looking for someones help. Is there a standard methodology or known equation for generating a random alpha numeric serial or incremental, which does not allow two characters to be used in sequence to each other which are near each other on the keyboard. Iv attached two pictures below, which shows if you select a green key, the surrounding would not be allowed...

I have a vague memory this is what a number of banks do to generate account numbers in aid of reducing human error on typing.

View attachment 5580
View attachment 5581

The reason for this is at my company we are changing the way we create part numbers, but at present mistyping is a issue for ordering as all our part numbers are incremental i.e. LR000123, LR000124, LR000125.

Any help would be much appreciated.
 

Attachments

  • Keyboard1.png
    Keyboard1.png
    5.4 KB · Views: 148
  • Keyboard2.png
    Keyboard2.png
    5.4 KB · Views: 149
Technology news on Phys.org
chris288 said:
Hi All

Im hoping I am in the right area to ask this?!?

Im looking for someones help. Is there a standard methodology or known equation for generating a random alpha numeric serial or incremental, which does not allow two characters to be used in sequence to each other which are near each other on the keyboard. Iv attached two pictures below, which shows if you select a green key, the surrounding would not be allowed...

I have a vague memory this is what a number of banks do to generate account numbers in aid of reducing human error on typing.

The reason for this is at my company we are changing the way we create part numbers, but at present mistyping is a issue for ordering as all our part numbers are incremental i.e. LR000123, LR000124, LR000125.

Any help would be much appreciated.
I'd argue your looking at the problem in the wrong way. The real question should be why are you having people type in the part numbers instead of selecting them from a list?

That being said bank/credit card numbers do not avoid numbers being side by side on a keyboard or keypad. They likely use some form of error detection code, such as a Hamming Code, to define the numbers. Depending on how the Hamming Code is setup it can detect a certain number of errors in the code, and can even correct a smaller number of such errors.
 
squidsk said:
I'd argue your looking at the problem in the wrong way. The real question should be why are you having people type in the part numbers instead of selecting them from a list?

That being said bank/credit card numbers do not avoid numbers being side by side on a keyboard or keypad. They likely use some form of error detection code, such as a Hamming Code, to define the numbers. Depending on how the Hamming Code is setup it can detect a certain number of errors in the code, and can even correct a smaller number of such errors.

Thanks. I can understand where your coming from but we have over 500k part numbers at present and this needs to be future proof... so a methodology that can run on for years to come, so a drop list isn't feasible. Even using a drop list for validation, if the keys are close we are still prone to "fat fingers" when typing in a part number.

Im thinking something like the KNN algorithm but a Non-KNN approach if that makes sense?
 
Last edited:
chris288 said:
Thanks. I can understand where your coming from but we have over 500k part numbers at present and this needs to be future proof... so a methodology that can run on for years to come, so a drop list isn't feasible. Even using a drop list for validation, if the keys are close we are still prone to "fat fingers" when typing in a part number.

Im thinking something like the KNN algorithm but a Non-KNN approach if that makes sense?

Having people type in a product number is not future proof. I never said all products needed to be seen at the same time on the list nor that the list had to be dropdown list. The system should allow for filtering to allow for users to narrow the focus down so that there are fewer products listed and hence you don't need to scroll through 500K+ entries. If I order a book from amazon I don't need to scroll through all X million book entries to find the one(s) I want, similarly there's no need for your users to do the same thing.

Anybody who does serious programming will tell you that user input, especially typing, is one of the most error prone ways of getting input. To future proof you want to get away from direct user input especially on critical area like what parts should be ordered.
 
Ho Chris288! Welcome to MHB! ;)

A standard solution is to add one more digit to each number that is a checksum. It will detect 1 or even more typing errors and it will also detect swapping of digits.
It's for instance used for bar codes and the ISBN numbers of books.
 
squidsk said:
Having people type in a product number is not future proof. I never said all products needed to be seen at the same time on the list nor that the list had to be dropdown list. The system should allow for filtering to allow for users to narrow the focus down so that there are fewer products listed and hence you don't need to scroll through 500K+ entries. If I order a book from amazon I don't need to scroll through all X million book entries to find the one(s) I want, similarly there's no need for your users to do the same thing.

Anybody who does serious programming will tell you that user input, especially typing, is one of the most error prone ways of getting input. To future proof you want to get away from direct user input especially on critical area like what parts should be ordered.

Im fully on board with you and we are working to remove use input but with our global rollout it we looking to be years off :(, the issue is this type of solution you mention isn't available for us as we are using SAP and due to development policies we wouldn't be able to get the change through, so our only control is what number is generated and trying to address it there. Hope this makes sense.

- - - Updated - - -

I like Serena said:
Ho Chris288! Welcome to MHB! ;)

A standard solution is to add one more digit to each number that is a checksum. It will detect 1 or even more typing errors and it will also detect swapping of digits.
It's for instance used for bar codes and the ISBN numbers of books.

Hi, Thanks for this i'll have a look into this. I am not 100% on how it works and if it requires functionality. The issue is we are trying to address this in SAP and material entry level :( lol
 
chris288 said:
Hi, Thanks for this i'll have a look into this. I am not 100% on how it works and if it requires functionality. The issue is we are trying to address this in SAP and material entry level :( lol

Let's pick an example.

Suppose we have the number $000123$ as in your previous post.
We add a checksum digit $c$ at the end, so we have $000123c$.
Each digit gets multiplied by respectively 7, 6, 5, 4, 3, 2, 1, the results get added together, and then we take the remainder after dividing by 11.
The checksum digit $c$ is such that it results in $0$.

That is, we calculate:
$$7\cdot 0 + 6\cdot 0 + 5\cdot 0 + 4\cdot 1 + 3 \cdot 2 + 2 \cdot 3 + 1 \cdot c \bmod 11
= 16 + c \bmod 11 = 5 + c \bmod 11 = 0
$$
where $\bmod$ is the remainder after dividing by the number after.

It follows that the checksum digit $c = 6$.

So the number we use is $0001236$ instead of $000123$.
When someone types in the number, we calculate the result again and verify if it is indeed $0$.
If it is not, there is a typing error that needs to be corrected.
 

Similar threads

  • · Replies 10 ·
Replies
10
Views
3K
Replies
10
Views
5K
  • · Replies 1 ·
Replies
1
Views
4K
  • · Replies 21 ·
Replies
21
Views
3K
  • · Replies 3 ·
Replies
3
Views
6K
  • · Replies 1 ·
Replies
1
Views
3K
Replies
29
Views
5K
Replies
2
Views
3K
  • · Replies 0 ·
Replies
0
Views
2K