새로운 숫자 값을 생성하는이 방법이 있지만 기능을 완료하는 데 오랜 시간이 걸립니다. 빠른 승인에서 임의의 숫자를 생성하는 방법은 무엇입니까?주어진 숫자 배열에 존재하지 않는 숫자 값을 생성하는 방법은 무엇입니까?
public int GeneratenewID(int[] OptionId)
{
Random ran = new Random();
int SearchId = ran.Next(1, OptionId.Length*2);
if (!OptionId.Contains(SearchId))
{
return SearchId;
}
else
{
return GeneratenewID(OptionId);
}
}
그것은 거의 확실 깨진 셔플 알고리즘이다. Google "C# fisher yates shuffle" –
한발 뒤로 물러나서 ** 왜 ** 당신이 필요하다고 생각하는지 설명하십시오. XY 문제 - https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem과 같은 냄새가납니다. – mjwills
함수에서'Random ran = new Random(); '을 취하고 랜덤 인스턴스에 클래스 필드를 사용하십시오. 무작위 빈 생성자가 시스템 시간을 시드로 사용하고 시스템 시간이 변경되기 전에 재귀 메서드에서 몇 번 실행되기 때문에 시간이 오래 걸리므로 동일한 번호가 반복해서 생성됩니다. –