Generating random numbers without repeating.C#

前端 未结 11 1863
臣服心动
臣服心动 2020-12-01 17:53

Hi everyone I am trying to generate 6 different numbers on the same line in c# but the problem that i face is some of the numbers are repeating on the same line.Here is my c

11条回答
  •  一整个雨季
    2020-12-01 17:57

    The best approach (CPU time-wise) for such tasks is creating an array of all possible numbers and taking 6 items from it while removing the item you just took from the array. Example:

    const int min = 1, max = 49;
    List listNumbers = new List();
    int[] numbers = new int[max - min + 1];
    int i, len = max - min + 1, number;
    
    for (i = min; i < max; i++) numbers[i - min] = i;
    for (i = 0; i < 6; i++) {
        number = rand.Next(0, len - 1);
        listNumbers.Add(numbers[number]);
        if (number != (len - 1)) numbers[number] = numbers[len - 1];
        len--;
    }
    

提交回复
热议问题