如何使用IndexOf方法解决C#幸运抽奖程序中随机数字重复的问题?
解决幸运抽奖程序的重复随机数问题
嘿,我来帮你搞定这个重复数字的问题!首先先提个小细节:你的代码里用了num[x],但数组明明叫luckyNumbers,这会导致编译错误,得先把变量名统一过来~
接下来咱们用Array.IndexOf()方法来检查重复,思路很简单:每次生成新的随机数后,先看看这个数已经在数组里存在了没,如果不存在就保留,要是存在就重新生成一个。
修改后的完整代码如下:
using System; namespace LuckyDip { class Program { static void Main(string[] args) { int[] luckyNumbers = new int[6]; Random random = new Random(); for (int x = 0; x < 6; x++) { int newNum = random.Next(1, 60); // 注意Next是左闭右开,写60才能包含59 // 检查新生成的数字是否已存在于数组中 while (Array.IndexOf(luckyNumbers, newNum) != -1) { // 如果存在,就重新生成新数字 newNum = random.Next(1, 60); } luckyNumbers[x] = newNum; Console.WriteLine(luckyNumbers[x]); } Console.ReadLine(); } } }
关键逻辑说明:
Random.Next(1, 60):这个方法是左闭右开区间,所以第二个参数填60才能让生成的数覆盖1到59的范围。Array.IndexOf(luckyNumbers, newNum):它会在数组中查找指定元素,找到就返回对应索引,找不到则返回-1。我们用这个返回值判断数字是否重复。- 循环校验:如果生成的数字已经存在,就一直重新生成,直到拿到一个不重复的数再存入数组。
这样修改后,你的程序就不会再出现重复的幸运数啦~
内容的提问来源于stack exchange,提问作者Yousuf Ahmed
相关产品推荐
相关产品推荐

