JavaScript 중복 되 지 않 는 난수
자 바스 크 립 트 에서 일반적으로 발생 하 는 랜 덤 수 는 중복 되 지만, 때때로 우 리 는 중복 되 지 않 는 랜 덤 수가 필요 합 니 다. 어떻게 실현 합 니까?다음은 세 가지 방법 으로 중복 되 지 않 는 임 의 수 를 만 들 고 비교 해 보면 효율 이 높다.
방법 1
사고: 먼저 1 부터 3000 까지 의 배열 을 만 들 고 매번 에 하나의 수 를 취한 다음 에 배열 에서 꺼 낸 이 수 를 제거 하면 영원히 중복 되 지 않 을 수 있 습 니 다.
<br>var count=3000;
<br>var originalArray=new Array;//
<br>// originalArray
<br>for (var i=0;i<count;i++){
<br>originalArray[i]=i+1;
<br>}
<br>var d1=new Date().getTime();
<br>for (i=0;i<count;i++){
<br>var index=Math.floor(Math.random()*originalArray.length); //
<br>document.write(index+" , ");
<br>originalArray.splice(index,1);
<br>}
<br>var d2=new Date().getTime();
<br>document.write(" "+(d2-d1));
<br>
성능: 1528 밀리초 소모.
방법 2
사고방식: 방법 1 의 slice 방법 을 개선 하여 효율 을 높 인 다.아니면 원래 배열 에서 하나의 수 를 꺼 내 서 원래 배열 의 이 위 치 를 null 로 할당 합 니까?다음 취 수 는 null 인지 여 부 를 판단 하고 null 이면 취하 지 않 습 니 다.
<br>var count=3000;
<br>var originalArray=new Array;//
<br>// originalArray
<br>for (var i=0;i<count;i++){
<br>originalArray[i]=i+1;
<br>}
<br>var d1=new Date().getTime();
<br>for (var num,i=0;i<count;i++){
<br>do{
<br>num=Math.floor(Math.random()*count);
<br>}while(originalArray[num]==null);
<br>document.write(originalArray[num]+" , ");
<br>originalArray[num]=null;
<br>}
<br>var d2=new Date().getTime();
<br>document.write(" "+(d2-d1));
<br>
성능: 290 밀리초 소모.
방법
사고방식: 원수 조 를 흩 어 뜨 린 다음 에 순서대로 출력 하면 무 작위 로 영원히 반복 되 지 않 고 효율 이 더욱 높다.
<br>var count=3000;
<br>var originalArray=new Array;//
<br>// originalArray
<br>for (var i=0;i<count;i++){
<br>originalArray[i]=i+1;
<br>}
<br>var d1=new Date().getTime();
<br>originalArray.sort(function(){ return 0.5 - Math.random(); });
<br>for (var i=0;i<count;i++){
<br>document.write(originalArray[i]+" , ");
<br>}
<br>var d2=new Date().getTime();
<br>document.write(" "+(d2-d1));
<br>
성능: 229 밀리초 소모.
성능 분석 을 통 해 방법 세 가 지 를 얻 는 것 이 가장 좋 은 방안 이다.
다음으로 전송:https://www.cnblogs.com/thinkingthigh/p/3792642.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.