在C#中,為了避免生成的隨機數重復,可以使用以下方法:
System.Random
類,并確保每次創建一個新的實例。這樣可以確保每次運行程序時都會得到不同的隨機數序列。但是,在同一程序運行期間,如果多次創建Random
實例,可能會因為種子值相同而導致生成相同的隨機數。Random random = new Random();
int randomNumber = random.Next();
System.Security.Cryptography.RNGCryptoServiceProvider
類來生成加密安全的隨機數。這種方法生成的隨機數比System.Random
更加隨機,適用于需要高度隨機性的場景,如密碼生成等。using System.Security.Cryptography;
byte[] randomBytes = new byte[4]; // 生成一個4字節的隨機數
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetBytes(randomBytes);
int randomNumber = BitConverter.ToInt32(randomBytes, 0);
System.Collections.Generic.HashSet<T>
來存儲已經生成過的隨機數,并在生成新的隨機數時檢查它是否已經存在于集合中。如果存在,則重新生成。HashSet<int> generatedNumbers = new HashSet<int>();
Random random = new Random();
for (int i = 0; i < 10; i++)
{
int randomNumber;
do
{
randomNumber = random.Next(1, 100); // 生成1到99之間的隨機數
} while (generatedNumbers.Contains(randomNumber));
generatedNumbers.Add(randomNumber);
Console.WriteLine(randomNumber);
}
請注意,當隨機數范圍較小且需要生成的數量較多時,這種方法可能會導致性能下降,因為可能需要多次嘗試才能找到一個不重復的隨機數。在這種情況下,可以考慮使用其他方法,如預先生成一個隨機數序列并將其存儲在列表或數組中,然后在需要時按順序取出。