가능한 중복 :
Create Random Number Sequence with No Repeats얻기 10000 개 고유 한 임의의 숫자 (성능)
난 단지 숫자를 짧은 문자열을 사용하는 단축 URL을 작성하고 싶습니다.
저는 카운트하고 싶지 않습니다. 다음 번 번호를 무작위 (또는 의사 랜덤)로하고 싶습니다. 첫번째 생각 알고리즘에서
은 다음과 같을 것이다 (의사 코드) :
do
{
number = random(0,10000)
}
while (datastore.contains(number))
datastore.store(number, url)
이 구현 문제는 : 데이터 저장소가 더 숫자가 포함으로, 가능성은이 루프가 실행됩니다된다 여러 번. 시간이 지남에 따라 성능이 저하됩니다.
이미 사용중인 난수를 얻는 더 좋은 방법은 없습니까?
관련 항목 : http://stackoverflow.com/questions/693880/create-random-number-sequence-with-no-repeats – Thilo
[O (1)의 고유 난수?] (http : /스택 오버플로.com/questions/196017/unique-random-numbers-in-o1) – Gumbo
더 긴 UUID 대신 짧은 숫자를 사용하면 해당 숫자가 추측됩니다. 즉, 사람들은 단지 몇 가지를 시도하여 등록한 다른 사람들이 볼 수있는 URL을 볼 수 있습니다 번호. 그것은 문제 일 수도 있고 아닐 수도 있습니다. – Thilo