임의의 항목을 선택해야하는 경우가 있습니다. 그러나 총 항목 수를 알지 못하고 엄청난 배열을 만들고 싶지 않습니다. 그런 다음 항목을 선택하십시오. 당신이, 내가 정말 필요가 없습니다 거대한 수집을 짓고 있어요 볼 수 있듯이총 항목 수를 모른 채 임의의 항목 선택
List<string> items;
while (true)
{
string item = GetNextItem();
if (item == null)
break;
}
int index = random.GetNext(0, items.count);
, 나는 그냥 0 사이의 임의의 숫자와 숫자의 필요 : 예를 들어, 내가 지금 무엇을 가지고 항목. 여기에 내가 일을 생각하고 무엇이며, 그것은 작동하지만, 내가 거기에 전문가의 그것과 오류 찾을 수 있는지 알고 싶습니다 :
int index = -1;
int total;
string selectedItem;
while (true)
{
string item = GetNextItem();
if (item == null)
break;
++total;
int rnd = random.Next(0, total);
if (rnd == total- 1)
{
index = total- 1;
selectedItem = item;
}
}
이 나에게 내 인덱스 번호를 제공을하고, 무작위로 선택한 항목. 이것에 대한 나의 생각은 예를 들어 총 3 개의 항목이있을 때 0에서 2 사이의 난수를 선택하고 2와 같으면 무시하지 않을 경우 새 항목을 선택한 항목으로 사용한다는 것입니다. 총 아이템 수가 증가함에 따라, 새로운 아이템이 선택 될 확률은 그에 따라 감소합니다.
이 방법이 "좋음"입니까? 배열을 만들고 나중에 항목을 선택할 때 "임의"로 사용합니까? 가능한 한 빨리? 무작위 수에 대한 나의 무지를 통해 나를 인도 해주세요. :)
@Sky 샌더스 : 심야 토요일 게시물 ... – Randolpho
LOL - 확실한. :) null 항목이 반환 될 때까지 원본에서 항목을 가져 오는 무한 루프가 있습니다. 그 중 하나를 무작위로 골라야합니다. –
두 번째 코드 블록에서 '합계'를 의미 할 때 '카운트'를 사용했다고 생각합니다. –