Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#数组中,如何不创建重复的随机数?_C#_Random_Duplicates - Fatal编程技术网

在C#数组中,如何不创建重复的随机数?

在C#数组中,如何不创建重复的随机数?,c#,random,duplicates,C#,Random,Duplicates,我是C#的初学者,正在尝试制作彩票申请表。 有几种类型,第一种是当你有5个提示(otos bool)和5个提示(hatos bool)时。 抽奖数量有多种类型(tiz、harminc、kilencven、negyvenot)。 我尝试用数组扫描抽奖后的数字。使用此代码等于: for (int i = 0; i <= 4; i++) { for (int y = 0; y <= 4; y++) { if (Array.Equals(lottoszamo

我是C#的初学者,正在尝试制作彩票申请表。 有几种类型,第一种是当你有5个提示(otos bool)和5个提示(hatos bool)时。 抽奖数量有多种类型(tiz、harminc、kilencven、negyvenot)。 我尝试用
数组扫描抽奖后的数字。使用此代码等于:

for (int i = 0; i <= 4; i++)
{ 
    for (int y = 0; y <= 4; y++)
    {
        if (Array.Equals(lottoszamok[i], lottoszamok[y]))
            lottoszamok[i] = r.Next (1, ?);
    }
}
for(inti=0;i试试这个

if (i!=y && Array.Equals(lottoszamok[i], lottoszamok[y]))
试试这个

if (i!=y && Array.Equals(lottoszamok[i], lottoszamok[y]))

如果您试图不重复地从范围
1..n
中选取数字,则需要将数字“洗牌”:

int[] allPossibleNumbers = Enumerable.Range(1, maxNumber).ToArray();
int[] picked = new int[numberToPick];
for (int i = 0; i < numberToPick; i++)
{
    int index = r.Next(i, maxNumber);
    picked[i] = allPossibleNumbers[index];
    allPossibleNumbers[index] = allPossibleNumbers[i];
}

如果您试图不重复地从范围
1..n
中选取数字,则需要将数字“洗牌”:

int[] allPossibleNumbers = Enumerable.Range(1, maxNumber).ToArray();
int[] picked = new int[numberToPick];
for (int i = 0; i < numberToPick; i++)
{
    int index = r.Next(i, maxNumber);
    picked[i] = allPossibleNumbers[index];
    allPossibleNumbers[index] = allPossibleNumbers[i];
}
我花了很多时间来实现这一点,但我相信我能做到,现在我做到了,用一种更简单的方式,这消除了所有关于随机的想法,而不是重复,非常简单的代码,没有开发人员的任何哲学或困难…(欢迎来到我的工作)那(最好的中的最好的): 介于(1-10)之间的数字,无任何重复,1-我在C中的工作# 我花了很多时间来实现这一点,但我相信我能做到,现在我做到了,用一种更简单的方式,这消除了所有关于随机的想法,而不是重复,非常简单的代码,没有开发人员的任何哲学或困难…(欢迎来到我的工作)那(最好的中的最好的): 介于(1-10)之间的数字,无任何重复,1-我在C中的工作#
我这样做的,如果你想你可以把交换一样的方法

static void SwapInts(int[] array, int position1, int position2)
{
    // Swaps elements in an array.

    int temp = array[position1]; // Copy the first position's element

    array[position1] = array[position2]; // Assign to the second element

    array[position2] = temp; // Assign to the first element
}
static void Main()
{                                                
    Random rng = new Random();

    int n = int.Parse(Console.ReadLine());

    int[] intarray = new int[n];

    for (int i = 0; i < n; i++)
    {
        // Initialize array
        intarray[i] = i + 1;
    }
    // Exchange resultArray[i] with random element in resultArray[i..n-1]
    for (int i = 0; i < n; i++)
    {
        int positionSwapElement1 = i + rng.Next(0, n - i);
        SwapInts(intarray, i, positionSwapElement1);
    }
    for (int i = 0; i < n; i++)
    {
        Console.Write(intarray[i] + " ");
    }
}
静态无效交换(int[]数组、int位置1、int位置2)
{
//交换数组中的元素。
int temp=array[position1];//复制第一个位置的元素
数组[position1]=数组[position2];//分配给第二个元素
数组[position2]=temp;//分配给第一个元素
}
静态void Main()
{                                                
随机rng=新随机();
int n=int.Parse(Console.ReadLine());
int[]intarray=新的int[n];
对于(int i=0;i

}

我是这样做的,如果你想的话,你可以使用类似交换的方法

static void SwapInts(int[] array, int position1, int position2)
{
    // Swaps elements in an array.

    int temp = array[position1]; // Copy the first position's element

    array[position1] = array[position2]; // Assign to the second element

    array[position2] = temp; // Assign to the first element
}
static void Main()
{                                                
    Random rng = new Random();

    int n = int.Parse(Console.ReadLine());

    int[] intarray = new int[n];

    for (int i = 0; i < n; i++)
    {
        // Initialize array
        intarray[i] = i + 1;
    }
    // Exchange resultArray[i] with random element in resultArray[i..n-1]
    for (int i = 0; i < n; i++)
    {
        int positionSwapElement1 = i + rng.Next(0, n - i);
        SwapInts(intarray, i, positionSwapElement1);
    }
    for (int i = 0; i < n; i++)
    {
        Console.Write(intarray[i] + " ");
    }
}
静态无效交换(int[]数组、int位置1、int位置2)
{
//交换数组中的元素。
int temp=array[position1];//复制第一个位置的元素
数组[position1]=数组[position2];//分配给第二个元素
数组[position2]=temp;//分配给第一个元素
}
静态void Main()
{                                                
随机rng=新随机();
int n=int.Parse(Console.ReadLine());
int[]intarray=新的int[n];
对于(int i=0;i

}次要的文体思考:
if(egyeni==true)
是多余的-你只需要
if(egyeni)
。否则,我们应该停在哪里?
如果(!!(((egyeni==true)==true)==true)!=false)
?你可能是对的,尽管谁会说
eqyeni
bool
?:p(好吧,其他大多数人都被认为是
bool
。我只是想找个借口写一个类,这样
==true
是必要的。)次要的风格思考:
如果(egyeni==true)
是多余的-你只需要
if(egyeni)
。否则,我们应该在哪里停下来?
如果(!!(((egyeni==true)==true)==true)==true)!=false)
?你可能是对的,尽管谁能说
eqyeni
是一个
bool
?:p(好吧,那么其他大多数人都说是
bool
。我只是想找个借口来写一个类,这样
==true
是必要的。)非常感谢你对我的帮助!(我怎么没发现!)@Onlin如果这有帮助,请单击向上箭头和复选标记。非常感谢您对我的帮助!(我怎么没发现!:)@Onlin如果这有帮助,请单击向上箭头和复选标记。
static void SwapInts(int[] array, int position1, int position2)
{
    // Swaps elements in an array.

    int temp = array[position1]; // Copy the first position's element

    array[position1] = array[position2]; // Assign to the second element

    array[position2] = temp; // Assign to the first element
}
static void Main()
{                                                
    Random rng = new Random();

    int n = int.Parse(Console.ReadLine());

    int[] intarray = new int[n];

    for (int i = 0; i < n; i++)
    {
        // Initialize array
        intarray[i] = i + 1;
    }
    // Exchange resultArray[i] with random element in resultArray[i..n-1]
    for (int i = 0; i < n; i++)
    {
        int positionSwapElement1 = i + rng.Next(0, n - i);
        SwapInts(intarray, i, positionSwapElement1);
    }
    for (int i = 0; i < n; i++)
    {
        Console.Write(intarray[i] + " ");
    }
}