生活随笔
收集整理的這篇文章主要介紹了
C#实现简单的双色球模拟器
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
思路如下:
1.在控制臺(tái)中購(gòu)買一注彩票的方法
--請(qǐng)輸入第i號(hào)紅球的號(hào)碼
--輸入要求:①輸入范圍為1-33②輸入不能重復(fù)
2.隨機(jī)生成一注彩票的方法
--隨機(jī)數(shù)random.Next(1,34) ?(意思是從1開(kāi)始,同時(shí)小于34)
--要求①?gòu)男〉酱笈帕孝诓荒苤貜?fù)
3.開(kāi)獎(jiǎng),即匹配輸入和生成的彩票,返回中獎(jiǎng)等級(jí)(寫(xiě)一方法)
要分別計(jì)算紅球和藍(lán)球猜中的數(shù)量
在main中進(jìn)行測(cè)試
static void Main(){int[]arr1=BuyLottery();int count=0;int level;do{count++;int[]arr2=RandomLottery(); level = TicketsEquals(arr1, arr2);if (level != 0)Console.WriteLine("恭喜,中了{(lán)0}等獎(jiǎng),共花費(fèi){1:c}元", level, count*2);} while (level != 1);}private static int[] BuyLottery(){int[] arr1 = new int[7]; //數(shù)組只放紅球號(hào)數(shù),藍(lán)球可以不放數(shù)組里,不然不方便排序for (int i = 0; i < 6; ){Console.WriteLine("請(qǐng)輸入第{0}個(gè)紅球的號(hào)碼",i+1);int num = int.Parse(Console.ReadLine());if(num>0&&num<=33&&Array.IndexOf(arr1,num)<0) //這一步同時(shí)確認(rèn)范圍正確和輸入未重復(fù),才能繼續(xù)輸入,否則i不+1//arr1[i++] = num; //(這里應(yīng)該是搜索num對(duì)應(yīng)的值是否在數(shù)組里存在!不是搜a(bǔ)rr[i]!) //array.indexof的值為-1時(shí)表示數(shù)組里沒(méi)有要查詢的元素,即未重復(fù)else if (num <= 0 || num > 33) //之前因?yàn)檫@個(gè)錯(cuò),測(cè)試時(shí)一直提示輸入重復(fù),鑄幣!{Console.WriteLine("輸入范圍有誤!");}else if (Array.IndexOf(arr1, num) >=0){Console.WriteLine("輸入重復(fù)!");}}Array.Sort(arr1,0,6);while(true){Console.WriteLine("請(qǐng)輸入藍(lán)球的號(hào)碼");int blue1 = int.Parse(Console.ReadLine());if (blue1 >= 1 || blue1 <= 16){arr1[6] = blue1;break;}else Console.WriteLine("超過(guò)輸入范圍!");} //紅球排完序后把藍(lán)球放最后return arr1;}//生成隨機(jī)彩票private static int[] RandomLottery(){int[] arr2 = new int[7];int number = 0;for (int i = 0; i < 6; ){Random red = new Random(); //生成隨機(jī)數(shù)number = red.Next(1, 34);if(Array.IndexOf(arr2,number)<0) //判斷過(guò)程和輸入一注彩票時(shí)相似arr2[i++] = number;}Array.Sort(arr2,0,6);Random blue = new Random(); //生成隨機(jī)數(shù)int blue2 = blue.Next(1, 17);arr2[6] = blue2;return arr2;}private static int TicketsEquals(int[] arr1, int[] arr2){//這里不應(yīng)再聲明數(shù)組或調(diào)用上面生成數(shù)組的方法,有形式參數(shù)就行,不用管arr1從哪來(lái),否則會(huì)一直調(diào)用,讓你一直輸入//arr1是在buylottery里面輸入的,在ticketsequals里面只是調(diào)用,這樣就只需要在控制臺(tái)輸入一次int count1 = 0;int count2 = 0;for (int i = 0; i < 6; i++){if (Array.IndexOf(RandomLottery(), arr1[i], 0, 6)>=0)count1++;}if (arr1[6] == arr2[6])count2 ++;int level;if (count1 + count2 == 7)level = 1;else if (count1 == 6 && count2 == 0)level = 2;else if (count1 == 5 && count2 == 1)level = 3;else if (count1 + count2 == 5)level = 4;else if (count1 + count2 == 4)level = 5;else if (count1 == 2 && count2 == 1)level = 6;else //這里之前條件沒(méi)寫(xiě)對(duì),調(diào)試時(shí)啥也沒(méi)顯示-_-||,還不如不寫(xiě)level = 0;return level;}}
}
偽隨機(jī)實(shí)現(xiàn)方法還可以在進(jìn)一步學(xué)習(xí)后進(jìn)行優(yōu)化,這里只用了C#默認(rèn)的random.Next方法
?
總結(jié)
以上是生活随笔為你收集整理的C#实现简单的双色球模拟器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。