作者kidnaper (弗卡夏)
看板C_Sharp
標題Re: [問題] 亂數的限制
時間Thu Aug 18 15:54:46 2011
※ 引述《linxiaoxi (葡萄神手)》之銘言:
: ※ 引述《kidnaper (弗卡夏)》之銘言:
: : 各位大大我想請問一下!!
: : 我想產生56個數隨機亂數,亂數的範圍在1~7
: : Random.rand1=new rand random ;
: : rand.Next(1,8);
: : 上述是否可以產生一個隨機1~7之間的亂數!!
: : 然而要如何一次產生56個!!這個我就不會了!!
: : 謝謝!!
: rand.Next(1,8);可以產生一個隨機1~7之間的亂數
: 如果要一次產生多個亂數,可以有兩種方法:
: 1)for(int i = 0; i <= 56; i++)
: {
: 你上面的程式代碼
: }
: 2)// Create a byte array to hold the random value.
: byte[] randomNumber = new byte[56];
: // Create a new instance of the RNGCryptoServiceProvider.
: RNGCryptoServiceProvider Gen = new RNGCryptoServiceProvider();
: // Fill the array with a random value.
: Gen.GetBytes(randomNumber);
: 這樣randomNumber這個byte陣列就是亂數陣列了
: 然后使用的時候,把每個byte轉int類型,然后%8就可以了
我用第一個方法
for (int i = 0; i < 56; i++)
{
Random rand1=new Random();
rand1.Next(1, 8);
Console.Write(rand1);
}
但是輸出的時候是產生56次的 "System.Random"....怎麼會這樣!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.127.27.212
→ james732:int x = rand1.Next(1, 8); Console.Write(x); 08/18 15:55
推 linxiaoxi:推 james732 08/18 15:56
→ kidnaper:果然可以產生56個數!!介於1~7之間!!但是.我按了幾次的結 08/18 15:59
→ kidnaper:果,通常是555...222...甚至只有一個數字!!不太隨機 08/18 16:00
推 ericinttu:一般的取亂數, 不適用在單純的for-loop裡一直狂取. 08/18 16:29
→ ericinttu:時間因子都是同一個, 所以得到的亂數值也都會是重覆值. 08/18 16:30
推 linxiaoxi:推ericinttu,所以推薦使用我提供的第二種方法 08/18 16:37
→ ericinttu:那我應該推樓上你的第二個方法 XD 08/18 16:55
→ kidnaper:是的~把random rand1= new random 放到迴圈上面即可!! 08/18 17:03
→ kidnaper:非常謝謝大家的意見^^~ 08/18 17:03
推 TW1943:把Random rand1=new Random(); 放到外面 (for上) 08/21 02:19