2d_数组随机数(10行,6列)未重复到文件C#
我需要将10个随机数字组合(不重复)写入一个file.txt文件,就像彩票程序一样。除了不重复的随机数,我什么都有。它必须被视为(file.txt)具有10种thx组合的2D数组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
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))条件吗?类似这样的东西?不相关:我建议创建一个静态随机对象作为类字段,而不是本地字段。