在我過(guò)去三年的職涯中,遇到過(guò)無(wú)數(shù)的問(wèn)題,一直想記錄下來(lái),但是一直耽擱著。從這篇洗牌算法開(kāi)始,我會(huì)一點(diǎn)一點(diǎn)將我所記得的問(wèn)題和解決辦法整理出來(lái)。
固定數(shù)目的撲克牌,打完后洗牌,每次洗牌得到的順序都是不一樣的。
22個(gè)編號(hào)的盒子,對(duì)應(yīng)于22種給定的money,每次運(yùn)行時(shí)讓盒子里存放隨機(jī)的money。這是剛畢業(yè)的頭半年,我剛開(kāi)始學(xué)習(xí)java不久,領(lǐng)導(dǎo)讓我寫(xiě)的一個(gè)游戲程序里的一個(gè)技術(shù)問(wèn)題。后來(lái)我知道了,是網(wǎng)絡(luò)上的一個(gè)小游戲。只是給我的資料里不需要做游戲的界面,只要實(shí)現(xiàn)游戲的后臺(tái),在控制臺(tái)輸入輸出就可以。
public int[] randoms() //產(chǎn)生22個(gè)隨機(jī)排列的value。
{
Random r = new Random();
int temp1,temp2;
int send[] = {1,10,50,100,500,1000,5000,10000,25000,50000,75000,100000,
300000,500000,1000000,1500000,2000000,3500000,5000000,
7500000,10000000,25000000};
int len = send.length;
int returnValue[] = new int[22];
for(int i=0;i<22;i++)
{
temp1 = Math.abs(r.nextInt())% len;
returnValue[i] = send[temp1];
temp2 = send[temp1];
send[temp1] = send[len-1];
send[len-1] = temp2;
len--;
}
return returnValue;
}