摘 要:C#/WinForms中提供了Random類(lèi)幫助我們實(shí)現(xiàn)軟件設(shè)計(jì)中隨機(jī)取數(shù)的功能。本文通過(guò)對(duì)Random類(lèi)的Next方法的調(diào)用,實(shí)現(xiàn)了隨機(jī)取數(shù)、隨機(jī)取色的功能,展現(xiàn)了Random類(lèi)的作用。
關(guān)鍵詞:Random;隨機(jī);Next;屬性
中圖分類(lèi)號(hào):TP391.41
在軟件設(shè)計(jì)中,隨機(jī)數(shù)在很多領(lǐng)域中被廣泛用到,C#/WinForms中提供了Random類(lèi),該類(lèi)可以產(chǎn)生某些隨機(jī)性的數(shù)字序列,滿足我們使用的要求。本文通過(guò)一個(gè)1000以內(nèi)隨機(jī)數(shù)排序及隨機(jī)顏色設(shè)置的例子來(lái)說(shuō)明Random類(lèi)的作用。界面如下圖所示:
圖1
界面中“取數(shù)結(jié)果”和“排序結(jié)果”后的標(biāo)簽框控件分別設(shè)置AutoSize的屬性值為False,并通過(guò)鼠標(biāo)拖曳的方式調(diào)整兩個(gè)控件的大小。相關(guān)控件屬性設(shè)置如下:
(1)“取數(shù)結(jié)果”后的Label控件:名稱(chēng)lbFetch。
(2)“排序結(jié)果”后的Label控件:名稱(chēng)lbSort。
(3)Form窗體:名稱(chēng)FrmRandom,標(biāo)題“隨機(jī)數(shù)”。
(4)RadioButton控件:名稱(chēng)rbFive,標(biāo)題“5”。
(5)RadioButton控件:名稱(chēng)rbTen,標(biāo)題“10”。
(6)RadioButton按鈕:名稱(chēng)rbFif,標(biāo)題“15”。
(7)CheckBox控件:名稱(chēng)cbForecolor,標(biāo)題“前景色”。
(8)CheckBox控件:名稱(chēng)cbBackcolor,標(biāo)題“背景色”。
(9)Button控件:名稱(chēng)btnFetch,標(biāo)題“取數(shù)”,Enabled=True。
(10)Button按鈕:名稱(chēng)btnSort,標(biāo)題“排序”,Enabled=False。
(11)Button按鈕:名稱(chēng)btnExit,標(biāo)題“退出”,Enabled=True。
實(shí)現(xiàn)的功能描述如下:
(1)單擊“取數(shù)”按鈕,“排序”按鈕可用,“取數(shù)結(jié)果”后的標(biāo)簽框中顯示相應(yīng)隨機(jī)數(shù)值。
(2)單擊“排序”按鈕,“排序結(jié)果”后的標(biāo)簽框中顯示隨機(jī)取得的數(shù)字降序排序的結(jié)果。
(3)單擊“退出”按鈕,結(jié)束程序的運(yùn)行。
(4)選中“前景色”復(fù)選框,則lbFetch控件和lbSort控件的文本顏色隨機(jī)顯示;取消“前景色”選擇時(shí),文本顏色為“黑色”顯示。
(5)選中“背景色”復(fù)選框,則lbFetch控件和lbSort控件的背景顏色隨機(jī)顯示;取消“背景色”選擇時(shí),文本框背景顏色為“白色”顯示。
建立如上圖所示界面,相關(guān)代碼如下:
//定義字段成員變量
Randomrd=newRandom();int[] arr;
//初始化代碼
privatevoidfrmRandom_Load(object sender,EventArgs e)
{rbFive.Checked=true; btnSort.Enabled = 1;
lbFetch.Text=\"\"; lbSort.Text=\"\";}
//btnFetch控件的Click事件關(guān)聯(lián)的方法。
privatevoidbtnFetch_Click(object sender,EventArgs e)
{ btnSort.Enabled=true; lbFetch.Text=\"\";lbSort.Text=\"\";
if (rbFive.Checked==true) { arr=newint[5]; }
if (rbTen.Checked==true) { arr=newint[10]; }
if (rbFif.Checked==true) { arr=newint[15]; }
for (inti=0;i {arr[i]=rd.Next(1,1000); lbFetch.Text=lbFetch.Text+arr[i].ToString()+\"\";}} //btnSort控件的Click事件關(guān)聯(lián)的方法。 privatevoidbtnSort_Click(object sender,EventArgs e) { lbSort.Text=\"\"; for (inti=0;i { for(int j=i+1;j {if(arr[i] { int t=arr[i];arr[i]=arr[j];arr[j]=t;}}} foreach(intiinarr) { lbSort.Text=lbSort.Text + i.ToString()+\" \";} } //btnExit控件的Click事件關(guān)聯(lián)的方法。 privatevoidbtnExit_Click(object sender,EventArgs e) { Application.Exit();} //cbForecolor控件的CheckedChanged事件關(guān)聯(lián)的方法。 privatevoidcbForecolor_CheckedChanged(object sender,EventArgs e) {if(cbForecolor.Checked==true) {lbFetch.ForeColor=Color.FromArgb(rd.Next(0,255),rd.Next(0, 255),rd.Next(0,255)); lbSort.ForeColor=Color.FromArgb(rd.Next(0,255),rd.Next(0, 255),rd.Next(0, 255));} else {lbFetch.ForeColor=Color.Black; lbSort.ForeColor=Color.Black;}} //cbBackcolor控件的CheckedChanged事件關(guān)聯(lián)的方法。 privatevoidcbBackcolor_CheckedChanged(object sender,EventArgs e) {if(cbBackcolor.Checked==true) {lbFetch.BackColor=Color.FromArgb(rd.Next(0, 255),rd.Next(0,255),rd.Next(0,255)); lbSort.BackColor=Color.FromArgb(rd.Next(0,255),rd.Next(0,255), rd.Next(0,255));} else {lbFetch.BackColor=Color.White; lbSort.BackColor=Color.White;}} 參考文獻(xiàn): [1]計(jì)奎,楊建華,楊志強(qiáng).利用Windows時(shí)間函數(shù)生成服從正態(tài)分布的隨機(jī)數(shù)[J].測(cè)繪信息與工程,2004(02). [2]陳希孺,方開(kāi)泰,張潤(rùn)楚.偽隨機(jī)數(shù)串疊加的漸近理論[J].中國(guó)科學(xué)(A輯),1997(04). [3]鄭肇葆.正態(tài)分布偽隨機(jī)數(shù)據(jù)的產(chǎn)生和檢驗(yàn)[J].武漢大學(xué)學(xué)報(bào)(信息科學(xué)版),1980(01). [4]皮新明.一類(lèi)長(zhǎng)周期的偽隨機(jī)數(shù)序列[J].數(shù)值計(jì)算與計(jì)算機(jī)應(yīng)用,2001(04). 作者簡(jiǎn)介:韓淑芹(1975.09-),女,山東青州人,講師。 作者單位:濰坊工程職業(yè)學(xué)院,山東濰坊 262500