0-255 사이의 숫자 목록을 생성하기 위해 std :: mt19937 난수 생성기를 사용하고 싶습니다. "일단 숫자가 선택 되었으면 세트에 다시 나타나지 않습니다. " - 어떻게해야할지 모르겠군요. 이것에 대한 수학적 용어는 나를 탈출 (!) 당신이 아무 중복이 없는지 확인합니다과 같이, std::vector
대신 std::set
을 사용할 수std :: mt19937 mersenne 트위스터 분포가 아닌 반복 값
std::mt19937 twister;
std::uniform_int_distribution<int> distribution;
twister.seed(91210);
distribution = std::uniform_int_distribution<int>(0,255);
std::vector vNumbers;
vNumbers.resize(256);
for(int n = 0; n < 256; ++ n)
vNumbers[n] = distribution(twister);
다음 물론
iota
의테에 의해 대체 될 수 있습니다 자신의 (구글 피셔 - 예이츠, 또는 크 누스 참조) 롤 수있는 당신은 그들이 생성되는 순서를 유지해야합니까? – BoBTFish
아니요, 순서는 중요하지 않습니다. 나는 무작위 순서를 원한다. – fishfood
유일성을 얻기 위해'std :: set'을 사용하면 숫자가 정렬된다. 나는. '57 1 9 44 102 1'을 생성하여'std :: set'에 저장하면'1 9 44 57 102'이됩니다. 이게 받아 들여질 수 있니? (그리고 당신은'mySet.size() == 255'까지 생성을 계속한다.) – BoBTFish