Re: [問題] 亂數的限制

看板C_Sharp (C#)作者 (弗卡夏)時間14年前 (2011/08/18 15:54), 編輯推噓4(407)
留言11則, 5人參與, 最新討論串3/3 (看更多)
※ 引述《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

08/18 15:55, , 1F
int x = rand1.Next(1, 8); Console.Write(x);
08/18 15:55, 1F

08/18 15:56, , 2F
推 james732
08/18 15:56, 2F

08/18 15:59, , 3F
果然可以產生56個數!!介於1~7之間!!但是.我按了幾次的結
08/18 15:59, 3F

08/18 16:00, , 4F
果,通常是555...222...甚至只有一個數字!!不太隨機
08/18 16:00, 4F

08/18 16:29, , 5F
一般的取亂數, 不適用在單純的for-loop裡一直狂取.
08/18 16:29, 5F

08/18 16:30, , 6F
時間因子都是同一個, 所以得到的亂數值也都會是重覆值.
08/18 16:30, 6F

08/18 16:37, , 7F
推ericinttu,所以推薦使用我提供的第二種方法
08/18 16:37, 7F

08/18 16:55, , 8F
那我應該推樓上你的第二個方法 XD
08/18 16:55, 8F

08/18 17:03, , 9F
是的~把random rand1= new random 放到迴圈上面即可!!
08/18 17:03, 9F

08/18 17:03, , 10F
非常謝謝大家的意見^^~
08/18 17:03, 10F

08/21 02:19, , 11F
把Random rand1=new Random(); 放到外面 (for上)
08/21 02:19, 11F
文章代碼(AID): #1EJCL9bI (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #1EJCL9bI (C_Sharp)