Random 生成列表省道中不存在的随机数数组

Random 生成列表省道中不存在的随机数数组,random,flutter,dart,Random,Flutter,Dart,所以我有一个预定义的数字列表,其中每个数字由6个数字组成,如{1,2,3,4,5,6;34,52,3,76,12,4;53,1,4,76,23,5;…} 数字组中的每个数字的范围为1到99 import 'dart:math'; main() { var rng = new Random(); var l = new List.generate(12, (_) => rng.nextInt(100)); } 我想用dart生成一个由6个不同随机数组成的数组,这样它就不会出现在我

所以我有一个预定义的数字列表,其中每个数字由6个数字组成,如{1,2,3,4,5,6;34,52,3,76,12,4;53,1,4,76,23,5;…}

数字组中的每个数字的范围为1到99

import 'dart:math';

main() {
  var rng = new Random();
  var l = new List.generate(12, (_) => rng.nextInt(100));
}
我想用dart生成一个由6个不同随机数组成的数组,这样它就不会出现在我已经有的数字列表中了

import'dart:math';
import 'dart:math';

void main() {  
    var listOfSets = List<Set<int>>();

    final int nElementsWithMax = 99;  
    final int kTaken = 6;    
    final int requiredResults = 3;

    for (int i = 0; i < requiredResults; i++) {
      bool isInList = false;
      Set<int> anewSet;
      do {
        anewSet = Set.of(listRandom(nElementsWithMax, kTaken));
        isInList = listOfSets.firstWhere(
                (setInList) => anewSet.intersection(setInList).length == anewSet.length,
            orElse: () => null)
            != null;
      } while (isInList);
      listOfSets.add(anewSet);
    }
    print(listOfSets);
}

List<int> listRandom(int maxNumber, int numberOfGenerations) {

  final random = Random();
  var currentOptions = List<int>.generate(maxNumber, (i) => i);

  var list = List.generate(numberOfGenerations, (_) {
    final index = random.nextInt(currentOptions.length);
    final result = currentOptions[index];
    currentOptions.removeAt(index);    
    return result;
  });
  return list;
}
void main(){ var listOfSets=List(); 最终整数nElementsWithMax=99; 最终int kTaken=6; 最终要求的结果=3; 对于(int i=0;ianewSet.intersection(setInList).length==anewSet.length, orElse:()=>null) !=null; }while(isInList); 添加(anewSet); } 打印(集合列表); } 列表listRandom(int maxNumber,int numberOfGenerations){ 最终随机=随机(); var currentOptions=List.generate(maxNumber,(i)=>i); var list=list.generate(numberOfGenerations,(){ 最终索引=random.nextInt(currentOptions.length); 最终结果=当前选项[索引]; currentOptions.removeAt(索引); 返回结果; }); 退货清单; }
请记住,您不能超过定义的组合限制


在您的情况下,所需结果不能超过(100!)/((6!*(100-6)!)…一些巨大的数字

您可以有{1,2,3,4,5,6;1,2,3,4,5,6}?有多少组6个数字?不,每个序列在列表中只能出现一次,就像一个特殊的序列号,所以换句话说,我需要每个生成的序列与以前的数字序列列表中已经存在的序列不同,这非常有效……但我如何才能用某种预定义的方式声明列表d序列并使函数生成一个新序列,其中至少有一个不同的数字d更新,请重新检查。我想元素的顺序并不重要,而且如果您想使用列表而不是也可以轻松更改的集合,我非常感谢您按照我的要求工作……我很感激,我是dart的新手,所以这真的很重要帮了我很多忙再次感谢