如果 Random 使用不當,也是可以取出重複的數~!!
基本用方如下,這沒問題
Random random = new Random();
int r = -1;
for (int i = 0; i < 10; i++)
{
r = random.Next(0, 10);
Console.WriteLine(r);
}
把產生亂數的地方函數化後
using System;
namespace random
{
class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(getRandomInt());
}
Console.ReadKey();
}
public static int getRandomInt()
{
Random random = new Random();
return random.Next(0, 10);
}
}
}
結果變成
亂數變得不亂數,反而變成重複了。
解決方式:
其實只要在產生亂數時,都使用同一個實體
就是不要在 一直宣告新的 Random,這個功能就恢復正常了
using System;
namespace random
{
class Program
{
static Random random = new Random();
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(random.Next(0, 10));
}
Console.ReadKey();
}
}
}