Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
2d_数组随机数(10行,6列)未重复到文件C#_C#_Arrays_Random - Fatal编程技术网

2d_数组随机数(10行,6列)未重复到文件C#

2d_数组随机数(10行,6列)未重复到文件C#,c#,arrays,random,C#,Arrays,Random,我需要将10个随机数字组合(不重复)写入一个file.txt文件,就像彩票程序一样。除了不重复的随机数,我什么都有。它必须被视为(file.txt)具有10种thx组合的2D数组 class Matriz { private int[,] array; private int nfilas, ncols; public void Ingresar() { Random aleatori = new Random(); n

我需要将10个随机数字组合(不重复)写入一个file.txt文件,就像彩票程序一样。除了不重复的随机数,我什么都有。它必须被视为(file.txt)具有10种thx组合的2D数组

class Matriz
{
    private int[,] array;
    private int nfilas, ncols;     

    public void Ingresar()
    {
        Random aleatori = new Random();
        nfilas = 10;
        ncols = 6;
        Console.WriteLine("\n");
        array = new int[nfilas, ncols];
        for (int filas = 0; filas < nfilas; filas++)
        {
            for (int columnas = 0; columnas < ncols; columnas++)
                array[filas, columnas] = aleatori.Next(0, 50);
        }
    }

    public void Imprimir()
    {
        StreamWriter fitxer = new StreamWriter(@"C:\andres\lotto649.txt");
        int contador = 0;
        for (int f = 0; f < nfilas; f++)
        {
            for (int c = 0; c < ncols; c++)                    
                fitxer.Write(array[f, c] + " ");

            fitxer.WriteLine();
            contador++;
        }
        fitxer.WriteLine($"\n\n\tHay {contador} combinaciones de la Loteria 6/49");
        fitxer.Close();
    }

    static void Main(string[] args)
    {            
        Matriz array_menu = new Matriz();
        array_menu.Ingresar();
        array_menu.Imprimir();           
       
    }
}
类矩阵
{
私有int[,]数组;
私人国际NFILA,ncols;
公开无效入口()
{
Random aleatori=新的Random();
nfilas=10;
ncols=6;
Console.WriteLine(“\n”);
数组=新整数[nfilas,ncols];
对于(int filas=0;filas
像这样的东西应该可以用。 在将新号码插入给定位置之前,请检查到目前为止的行中是否已存在相同的号码,如果已存在,请重复此过程,直到获得尚未存在的号码

for(int filas=0;filas
或者,由于这个数字很小,您也可以使用int列表并从中删除给定的值

这样做的好处是,你永远不必重做你的随机数,因为它总是会产生一个有效的结果。上述例子(理论上)可能会无限期地持续下去

for(int filas=0;filas
它实际上可以工作(编译、写出),但它会在同一行中生成重复的组合。如何解决它?我想你只想避免每行重复。我认为最简单的解决方案是跟踪为该行编写的数字,如果下一个随机数字已经包含,只需不断生成新数字,直到您得到一个尚未在列表中的数字。基本思想是:列出您的50个数字,然后随机获得一个数字,并从列表中删除该数字,然后获取下一个,直到列表为空或您有足够的数字。@jack-t-spades是的,这只是关于避免每行重复,您建议使用if(nums.Contains(aleatori))条件吗?类似这样的东西?不相关:我建议创建一个静态随机对象作为类字段,而不是本地字段。