深く考えるPHP配列のエルゴードの違いdiffの実現)


先日、ある人が試験システムを作るのを見ましたが、その時はランダム関数RNDを使って簡単に帰っただけです。
実際には普通、データベースからNコースの問題をランダムに抽出する必要があります。
以下のコードは全部VBSに基づいています。
通常の作成はこのようなものです。
重複しない乱数を生成するFnction darray(istart,iend,sum)dim arrayid(),i,j,blnre,temp,iloop,eloopreimarrayid(sum-1)i=0 iloop=0 blnre=falserandomizzewhile=suint+suint=1==staint===================Stararararartatatatatataint=0 0 0 0 0 0 0 0 mmmmmmmmmmmmmmmmmmmmmmmmmmmmn=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 else。
for j=0 to i-1 if arrayid(j)=temp thenbalnre=trueiloop=iloop+1 exit for'はこの文が重要です。余分な循環を防ぐためにelseiloop=iloop+1 end ifnext
 if blnre=false then arrayid(i)=temp i=i+1 else blnre=false end if
end freeloop=eloop+iloopiloop=0 looprndarray=join(arrayid)&「サイクル数:」&eloopend function
レスポンス.write rndarray(1,10,5)&「
」呼び出しプロセス
PSその中のiloop、eloopはサイクル数を計算するためです。
以上、多くの人はこのような方法で作成し、乱数を生成し、以前に生成したものと比較して、利用できるかどうかを判断します。
しかし、これはAIの一種ではありません。あるいは効率的な方法です。どうして二つの配列がないですか?
配列1は、必要な文字列、または数字などを格納し、配列2は生成された乱数を保存する。各ランダムに中間変数tempの下付きxを生成すると、配列2に割り当てられ、その後、配列1からxと標示された数字を削除して、中間変数tempに割り当てられる。このように1つの乱数を生成するごとに、この数を配列1から削除し、次にもう1つの数を生成すると重複しなくなります。この乱数を生成する方法の原理は実際には配列1から抽出されます。
方法2
function rndstr(istart,iend,isum)dim i,j,vntarray()redim vntarray(iend-instart)j=istatfor i=0 to iend-startray(i)=jj=j+1 next
dim vntarray 2()は、temp、x、yredim vntarray 2(isum-1)y=inndi-start+ 1 x=0 temp=vntarraydo while xレスポンス.write rndstr(1,5,2)
これはもっと簡単ですか?
展開してください。ランダムな文字列を生成するには、アルファベットの数字が含まれています。配列1に値を割り当てる場合、関数chr(num)を使います。
携帯電話の当選ページの手続きが必要です。
まず、配列1に値を割り当てます。130...~139....循環的に値を割り当てます。もちろん、実際に使用するときは、データベースから既存の割り当てをランダムに抽出して、配列2に割り当てます。
最後に、もうちょっと飾ってください。
temp=replace(join(array 2)、chr(32)、「」phone=left(temp、6)&「**」&right(temp、2)
13648****58のような結果を得ました。
そんなにたくさん書いて、疲れました。