今天由於需要一個c#生成不重復的隨機數的解決方案。
以下是思想:
首先建立一個列表ArrayList list,將其長度設為20,給其賦值,從1到20。
再隨機生成一個數,Random r=new Random()。每生成一個隨機數,就移走一個list中的元素
這樣一來,就不會出現重復了。 這裡我把ArrayList改成了List,以下是我的代碼:
public List<int> GenerateNumber()
{
Random random = new Random();
List<int> number = new List<int>(10);
List<int> result = new List<int>(4);
for (int i = 0; i < 10; i )
{
number.Add(i);
}
for (int i = 0; i < 4; i )
{
int tempNum = random.Next(0, number.Count);
result.Add(number[tempNum]);
number.RemoveAt(tempNum);
}
return result;
}
這個做法的核心思想就是 :每生成一個隨機數,就移走一個list中的元素
public static void Main(string[] args)
{
GuessGame guessGame = new GuessGame();
for (int i = 0; i < guessGame.GenerateNumber().Count; i )
{
Console.WriteLine(guessGame.GenerateNumber()[i]);
}
}