가상 조립 라인에서 제품의 일련 번호를 생성하는 난수 생성기를 만들려고합니다. 우리는 생성 할 난수를 얻었지만 일련 번호이기 때문에 중복을 만들지 않기를 원합니다. 다시 돌아가서 생성 된 번호가 이미 생성되었는지 확인한 다음 새 번호를 생성하기 위해 복제본인지 여부를 확인하고 " 고유 한 "번호.jscript에서 임의 번호 생성기 생성 및 중복 방지
답변
가장 쉬운 방법은이 문제를 해결하는 것입니다. 일련 번호의 일부를 구성하기 위해 시간과 같이 단조롭게 증가하는 것을 사용하십시오. 이를 위해 라인을 식별하는 고정 값을 미리 추가 할 수 있습니다.
그래서 일련 번호 형식이 NNNN은 4 자리의 줄 번호입니다 NNNNYYYYMMDDHHMMSS 될 수 있고 YYYY는 4 자리 연도, MM은
여러 가지를 만들 수 있다면 ..., 2 자리수의 달 단위 시간당 하나만 가능할 때까지 날짜 구성 요소를 추가하거나 오늘 생성 된 항목 수를 YYYYMMDD 구성 요소 (예 : NNNNYYYMMDDCCCCCC)에 추가하십시오.
일부 숫자에 대해 더 높은 기준을 사용하여 더 짧게 만들 수 있습니다. 예를 들어 base-32는 0-9A-Z (ILOQ 빼기)를 사용합니다. 이렇게하면 3 자리 "1"자로 된 월과 일 3 자리로 연도를 인코딩 할 수 있습니다. – tvanfosson
일련 번호의 핵심은 임의가 아니라는 것입니다. 일련 번호 definition에 의해 일련 번호가 지정됩니다. 왜 단순히 증가하는 숫자를 사용하지 않는가?
에 동의합니다. – Linmic
정말 임의의 숫자를 사용하면 전체 컬렉션을 저장하고 각 숫자에 대해 검토해야합니다. 분명히 이것은 세대가 느리고 느려질 것입니다. 생성하는 키의 수가 많을수록 (재 시도가 많아지고 더 큰 데이터 세트와 비교해야하기 때문에).
이 이유는 진정으로 난수가이 목적으로 사용되지 않는 이유입니다. 일련 번호의 경우 표준은 항상 순차적 번호 만 수행합니다 - 임의적 인 실제 값이 있습니까?
고유 ID는 거의 무작위가 아닙니다. GUID 등은 시스템 시간과 (대개의 경우) MAC 주소를 기반으로합니다. 값의 크기 나 임의성 수준 때문에가 아니라 사용 된 알고리즘과 기계 특성으로 인해 전 세계적으로 고유합니다.
개인적으로 나는 순차 값 (여러 개의 채널이있는 경우 고유 한 접두어로)을 사용하거나 더 나은 용도로 실제 GUID를 사용할 수있는 모든 작업을 수행합니다.
여기를 클릭하십시오.
var rArray;
function fillArray (range)
{
rArray = new Array();
for(var x = 0; x < range; x++)
rArray [x] = x;
}
function randomND (range)
{
if (rArray == null || rArray.length < 1)
fillArray (range);
var pos = Math.floor(Math.random()*rArray.length);
var ran = rArray [pos];
for(var x = pos; x < rArray.length; x++)
rArray [x] = rArray [x+1];
var tempArray = new Array (rArray.length-1)
for(var x = 0; x < tempArray.length; x++)
tempArray [x] = rArray [x];
rArray = tempArray;
return ran;
}
이미 수용된 답변에서 어떻게 개선 될까요? –
- 1. 빠른 임의 생성기
- 2. 중복 송장 번호 방지. 특정 ID에 대해
- 3. JavaScript의 임의 개체 생성기
- 4. QListView 및 QStandardItemModel - 중복 방지
- 5. 라벨의 임의 번호 - iPhone
- 6. 자바 임의 번호?
- 7. perl 시퀀스 번호 생성기
- 8. 파이썬 생성기 중복
- 9. 온라인 복권에 대한 신뢰할 수있는 임의 번호
- 10. substr 문제로 임의 번호 제거
- 11. jQuery의 함수 중복 방지
- 12. 임의 생성기 생성기의 임의의 문제는 무엇입니까?
- 13. graphviz 및 neato를 사용하여 중복 레코드 방지
- 14. 방지 중복 된 항목
- 15. CFgrid의 중복 업데이트 방지
- 16. 중복 SQL 항목 방지
- 17. 중복 로그인 기록 방지
- 18. JavaDoc 주석의 중복 방지
- 19. 라이센스 번호 생성 및 확인
- 20. asp.net 소리 나는 암호 생성기
- 21. 임의 트리 분기 생성
- 22. 데이터베이스의 트윗 보관하기 (중복 방지)
- 23. ColdFusion의 스레드 안전 일련 번호 생성기?
- 24. 테이블 행 복제, ID에 임의 번호 또는 순차 번호 추가
- 25. F #의 코드 중복 방지
- 26. 브라우저/액티비티 실행 중복 방지
- 27. struts2 iterator : 코드 중복 방지
- 28. 전자 메일 편집 중복 방지
- 29. 중복 MDI 자식 폼 방지
- 30. 자바 스크립트 CSS 클래스 (임의 번호 기반)
각 제품의 이름/ID/무언가를 해시하는 것이 쉬울까요? – JCOC611
@ JCOC611 - 해시가 충돌하므로 여기에서 사용하려는 것이 아닙니다. 고유성을 보장하는 결정적 알고리즘이 원하는 것입니다. – tvanfosson