PHP 배열 의 차 이 를 깊이 생각 합 니 다(array디 프 의 실현)

이틀 전에 누군가가 시험 시스템 을 짜 려 고 하 는 것 을 보 았 는데,그 때 는 단지 랜 덤 함수 RND 로 간단하게 되 돌아 갔다.
실제 데이터베이스 에서 N 개의 문 제 를 무 작위 로 추출 해 야 한다.
다음 코드 는 모두 VBS 를 기반 으로 합 니 다.
보통 이런 거 써 요.
'반복 되 지 않 는 난수 function rndarray(istart,iend,sum)dim arrayid(),i,j,blnre,temp,iloop,eloopredim arrayid(sum-1)i=0iloop=0blnre=falserandomizedo while ifor j=0 to i-1if arrayid(j)=temp thenblnre=trueiloop=iloop+1exit for'라 는 문장 은 매우 중요 하 며,불필요 한 순환 을 방지 하 는 elseiloop=iloop+1end ifnext
 if blnre=false then arrayid(i)=temp i=i+1 else blnre=false end if
end ifeloop=eloop+iloopiloop=0looprndarray=join(arrayid)&"순환 횟수:"&eloopend function
response.write rndarray(1,10,5)&'
'호출 과정
  PS。그 중 에 iloop,eloop 은 순환 횟수 를 계산 하기 위 한 것 일 뿐이다.
이상,대부분의 사람들 은 이러한 방법 으로 작 성 된 것 입 니 다.무 작위 수 를 만 든 다음 에 이전에 생 성 된 것 과 비교 하여 사용 가능 한 지 여 부 를 판단 합 니 다.
그러나 이것 은 AI 의 것 이 아니 거나 효율 적 인 방법 이 라 고 할 수 있 는데 왜 두 개의 배열 을 쓰 지 않 습 니까?
배열 1,필요 한 문자열 이나 숫자 등 을 저장 하고 배열 2 는 생 성 된 임 의 수 를 저장 합 니 다.매번 무 작위 로 중간 변수 temp 의 아래 표 x 를 생 성하 고 배열 2 에 부여 한 다음 에 배열 1 에서 아래 표 시 된 x 의 숫자 를 제거 하고 중간 변수 temp 에 부여 합 니 다.이렇게 해서 하나의 랜 덤 수 를 생 성 할 때마다 배열 1 에서 이 수 를 떼 고 다음 에 하나의 수 를 생 성 하면 중복 되 지 않 는 다.이런 랜 덤 수 를 생 성 하 는 방법 원 리 는 실제 배열 1 에서 추출 된다.
방법 2
function rndstr(istart,iend,isum)dim i,j,vntarray()redim vntarray(iend-istart)j=istartfor i=0 to iend-istartvntarray(i)=jj=j+1next
dim vntarray2(),temp,x,yredim vntarray2(isum-1)y=iend-istart+1x=0temp=vntarraydo while xresponse.write rndstr(1,5,2)
이렇게 하 는 것 이 더 간단 하지 않 습 니까?
펼 쳐 보 세 요.무 작위 문자열 을 만 들 려 면 알파벳 숫자 를 포함 할 때 배열 1 에 값 을 부여 할 때 함수 chr(num)를 사용 하 십시오.
휴대 전화 당 첨 페이지 프로그램 이 필요 하 다 고 가정 하 자.
먼저 값 을 배열 1 에 부여 하면 130...~139..................................................................................
마지막 으로 다시 한 번 수식 해 주세요.
temp=replace(join(array2),chr(32),"")phone=left(temp,6)&"***"&right(temp,2)
137648**58 과 비슷 한 결 과 를 얻 었 습 니 다.
그렇게 많이 써 서 힘 들 어 죽 겠 어~~

좋은 웹페이지 즐겨찾기