무작위로 생성 된 숫자를 3 개의 버킷으로 분할하는 좋은 알고리즘이 있으며 각 버킷에는 포함될 수있는 총량에 대한 제약이 있습니다.제약 조건이있는 3 개의 버킷으로 숫자 분할
예를 들어 임의로 생성 된 번호가 1,000이고 버킷 a, b 및 c로 분할해야한다고 가정합니다.
These ranges are only an example. See my edit for possible ranges.
Bucket a may only be between 10% - 70% of the number (100 - 700)
Bucket b may only be between 10% - 50% of the number (100 - 500)
Bucket c may only be between 5% - 25% of the number (50 - 250)
a + b + c must equal the randomly generated number
당신은 그래서 그 비율 평균의 주위에있는 세 가지 버킷의 동등한 기회뿐만 아니라 버킷 C 등의 최대 타격 버킷 마찬가지로 동일한 기회가 완전히 무작위로 할당 된 양을 원한다.
편집 : 다음은 대부분 항상 사실 일 것입니다. a + b + c의 하단은 < 100 %, a + b + c> 100 %의 하이 엔드입니다. 이 백분율은 a, b 및 c의 허용 가능한 값을 나타 내기위한 것입니다. a가 10 %이고 b 및 c가 최대 값 (각각 50 % 및 25 %) 인 경우 합계가 100 %가 아니므로 숫자를 다시 지정해야합니다. 이것은 하나의 패스에서이 숫자를 할당하는 방법을 찾는 것으로 피하려고하는 정확한 사례입니다.
나는 한 번의 패스로이 숫자를 무작위로 선택하는 방법을 찾고 싶습니다.
첫 번째 버킷의 10 %를 선택하면 최대 개수는 (10 % + 50 % + 25 %) * x = 초기 개수의 85 %입니다. 따라서 a + b + c는 유지 될 수 없습니다. – pnezis
죄송합니다. 게시물을 업데이트했습니다. – Aaron