作者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
1F:→ james732:int x = rand1.Next(1, 8); Console.Write(x); 08/18 15:55
2F:推 linxiaoxi:推 james732 08/18 15:56
3F:→ kidnaper:果然可以产生56个数!!介於1~7之间!!但是.我按了几次的结 08/18 15:59
4F:→ kidnaper:果,通常是555...222...甚至只有一个数字!!不太随机 08/18 16:00
5F:推 ericinttu:一般的取乱数, 不适用在单纯的for-loop里一直狂取. 08/18 16:29
6F:→ ericinttu:时间因子都是同一个, 所以得到的乱数值也都会是重覆值. 08/18 16:30
7F:推 linxiaoxi:推ericinttu,所以推荐使用我提供的第二种方法 08/18 16:37
8F:→ ericinttu:那我应该推楼上你的第二个方法 XD 08/18 16:55
9F:→ kidnaper:是的~把random rand1= new random 放到回圈上面即可!! 08/18 17:03
10F:→ kidnaper:非常谢谢大家的意见^^~ 08/18 17:03
11F:推 TW1943:把Random rand1=new Random(); 放到外面 (for上) 08/21 02:19