using System;using System.Linq;publicclassLOTTO{publicstaticint[]NumberGenerator(){var sixOf49 =newint[6];while(sixOf49[5]==0){var oneOfThem =newRandom((int)DateTime.Now.Ticks &0x0000FFFF).Next(1,50);if(sixOf49.Where(x => x.Equals(oneOfThem)).Any()){continue;}for(var i =0; i <6; i++){if(sixOf49[i]==0){
sixOf49[i]= oneOfThem;break;}}}
Array.Sort(sixOf49);
Array.Resize(ref sixOf49,7);
sixOf49[6]=(newRandom((int)DateTime.Now.Ticks &0x0000FFFF)).Next(0,10);return sixOf49;}publicstaticintCheckForWinningCategory(int[] checkCombination,int[] winningCombination){var check = checkCombination.Take(6).ToArray();var win = winningCombination.Take(6).ToArray();var count = win.Where(number => check.Where(x => x.Equals(number)).Count()!=0).Aggregate(14,(current, number)=> current -2);/*// long variant, which replaced linq-chain
var count = 14;
foreach (int number in win)
{
if (check.Where(x => x.Equals(number)).Count() != 0)
{
count -= 2;
}
}
*/if(checkCombination[6].Equals(winningCombination[6])) count--;if(count >9) count =-1;return count;}}
答案6:
using System;using System.Collections.Generic;using System.Linq;publicclassLOTTO{privatestaticRandom random =newRandom();publicstaticint[]NumberGenerator(){
List<int> randomNumbers =newList<int>();for(int i =0; i <6; i++){int randomNumber =0;do{
randomNumber = random.Next(1,50);}while(randomNumbers.Contains(randomNumber));
randomNumbers.Add(randomNumber);}
randomNumbers.Sort();
randomNumbers.Add(random.Next(0,10));return randomNumbers.ToArray();}publicstaticintCheckForWinningCategory(int[] checkCombination,int[] winningCombination){var winningNumbers = winningCombination.Take(6);int matchNumber = Enumerable.Range(0,6).Count(i => winningNumbers.Contains(checkCombination[i]));bool isSuperNumberMatch = checkCombination.Last()== winningCombination.Last();switch(matchNumber){case2:if(isSuperNumberMatch){return9;}break;case3:if(isSuperNumberMatch){return7;}return8;case4:if(isSuperNumberMatch){return5;}return6;case5:if(isSuperNumberMatch){return3;}return4;case6:if(isSuperNumberMatch){return1;}return2;default:break;};return-1;}}
答案7:
using System;publicclassLOTTO{publicstaticint[]NumberGenerator(){int[] arrayNumeros =newint[50];//From 1 to 49.int[] arrayTemp =newint[6];int[] arrayFinal =newint[7];int numero =0;int alea =0;for(int intI =0; intI <=49; intI++) arrayNumeros[intI]= intI;Random rnd =newRandom();for(int intI =0; intI <6; intI++){
numero = rnd.Next(1,49);//between 1 and 49.
alea = arrayNumeros[intI];
arrayNumeros[intI]= arrayNumeros[numero];
arrayNumeros[numero]= alea;}for(int intI =0; intI <6; intI++) arrayTemp[intI]=arrayNumeros[intI];
Array.Sort(arrayTemp);for(int intI =0; intI <6; intI++) arrayFinal[intI]=arrayTemp[intI];
arrayFinal[6]=rnd.Next(0,10);//between 0 and 9.return arrayFinal;}publicstaticintCheckForWinningCategory(int[] checkCombination,int[] winningCombination){int premios6 =0;for(int intCombi =0; intCombi <=5; intCombi++){for(int intI =0; intI <=5; intI++){if(checkCombination[intCombi]== winningCombination[intI]){
premios6++;break;}}}bool Superzahl =false;if(checkCombination[6]== winningCombination[6]) Superzahl =true;switch(premios6){case6:if(Superzahl)return1;elsereturn2;break;case5:if(Superzahl)return3;elsereturn4;break;case4:if(Superzahl)return5;elsereturn6;break;case3:if(Superzahl)return7;elsereturn8;break;case2:if(Superzahl)return9;break;}return-1;}}
答案8:
using System;using System.Linq;publicclassLOTTO{privatestaticint[] _numbers1 = Enumerable.Range(1,49).ToArray();privatestaticint[] _numbers2 = Enumerable.Range(0,10).ToArray();publicstaticint[]NumberGenerator(){Shuffle( _numbers1 );Shuffle( _numbers2 );return _numbers1.Take(6).OrderBy( _ => _ ).Concat(new[]{_numbers2 [0]}).ToArray();}publicstaticintCheckForWinningCategory(int[] checkCombination,int[] winningCombination ){var n = winningCombination.Length;if( checkCombination.Length != n ){return-1;}var matches =CountMatches( checkCombination, winningCombination );var superzahlMatch = checkCombination [ n -1]== winningCombination [ n -1];switch( matches ){case6:return superzahlMatch ?1:2;case5:return superzahlMatch ?3:4;case4:return superzahlMatch ?5:6;case3:return superzahlMatch ?7:8;case2:return superzahlMatch ?9:-1;default:return-1;}}privatestaticintCountMatches(int[] checkCombination,int[] winningCombination ){var matches =0;for(int i =0; i < winningCombination.Length -1; i++){for(int j =0; j < checkCombination.Length -1; j++){if( checkCombination [ j ]== winningCombination [ i ]){
matches +=1;}}}return matches;}privatestaticvoidShuffle(int[] array ){var random =newRandom();for(int i =0; i < array.Length; i++){var j = i + random.Next( array.Length - i );var t = array [ j ];
array [ j ]= array [ i ];
array [ i ]= t;}}}
答案9:
using System;using System.Linq;publicclassLOTTO{publicstaticint[]NumberGenerator(){int[] res =newint[]{-1,-1,-1,-1,-1,-1,50};for(int i =0; i <6; i++){int temp =newRandom().Next(1,50);if(res.Any(x => x == temp)) i--;else res[i]= temp;}
res = res.OrderBy(x => x).ToArray();
res[6]=newRandom().Next(0,10);return res;}publicstaticintCheckForWinningCategory(int[] checkCombination,int[] winningCombination){int res =0;int[] temp = winningCombination.Take(6).ToArray();for(int i =0; i <6; i++){if(temp.Any(x => x == checkCombination[i])) res++;}int bonus =0;if(winningCombination[6]== checkCombination[6]) bonus++;if(res >2) res =(7- res)*2- bonus;elsereturn-1;return res;}}
答案10:
using System;using System.Collections.Generic;publicclassLOTTO{publicstaticint[]NumberGenerator(){var random =newRandom();var list =newList<int>();while(list.Count<6){var r = random.Next(1,50);if(!list.Contains(r)) list.Add(r);}
list.Sort();
list.Add(random.Next(0,10));return list.ToArray();}publicstaticintCheckForWinningCategory(int[] checkCombination,int[] winningCombination){var count =0;for(int i =0; i < checkCombination.Length-1; i++)if(Array.BinarySearch(winningCombination,0, winningCombination.Length -1, checkCombination[i])>=0) count++;var s = checkCombination[checkCombination.Length -1]== winningCombination[winningCombination.Length -1]?-1:0;switch(count){case6:return2+ s;case5:return4+ s;case4:return6+ s;case3:return8+ s;case2:if(s ==-1)return9;break;}return-1;}}