要在10000000 - 99999999之間產(chǎn)生100萬(wàn)個(gè)不重復(fù)的隨機(jī)數(shù)。可以建立一個(gè)表table1,這個(gè)表有兩個(gè)字段,一個(gè)是所產(chǎn)生的隨機(jī)數(shù)字段(int型),另外一個(gè)也是int型字段。
使用99999999 - 10000000 =89999999 整除 1000000 = 89(舍去)。然后從10000000開(kāi)始循環(huán)1000000次,從10000000開(kāi)始每一次加89,
即10000000、10000089、10000178...
然后每循環(huán)一次,使用newid生成一個(gè)隨機(jī)數(shù),將這兩個(gè)數(shù)做為值插入table1中。即第一個(gè)字段插入按步長(zhǎng)89遞增的數(shù),第二個(gè)數(shù)是使用newid隨機(jī)生成的數(shù)。這樣,table1就有100萬(wàn)條記錄了,不過(guò)隨機(jī)值是順序的。但由于第二個(gè)字段是隨機(jī)的,因此,只要按第二個(gè)字段排序,第一個(gè)字段上的值就是隨機(jī)的。
這樣做不用檢查重復(fù)值就可以保證得到1000000個(gè)無(wú)重復(fù)的隨機(jī)數(shù)。而且它們是均勻分布在10000000到99999999之間。
當(dāng)然,也可以隨機(jī)變化89的步長(zhǎng),使其更加隨機(jī)。
這樣做還有一個(gè)好處,可以分批地生成記錄,然后一起插入表中。如一次產(chǎn)生1000條這樣的記錄,插入后再產(chǎn)生下一千條記錄。這樣只要循環(huán)1000次就可完成。
新聞熱點(diǎn)
疑難解答
圖片精選