1 Static voidMain (string[] args)2 {3 DoubleTotalAmount = -;4 intnum =Ten;5 DoubleMinamount =0.01;6Random r =NewRandom ();7 for(inti =1; i < num; i++)8 {9 DoubleSafeamount = (TotalAmount-(num-i) * minamount)/(Num-i);Ten //Double money = new Random (). Next (Convert.ToInt32 (Minamount *), Convert.ToInt32 (Safeamount * 100))/100; One DoubleMoney = Nextdouble (r, Minamount * -, Safeamount * -) / -; AMoney = Math.Round (Money,2, Midpointrounding.awayfromzero); -totalamount=totalamount-Money ; -TotalAmount = Math.Round (TotalAmount,2, Midpointrounding.awayfromzero); theConsole.WriteLine ("Section"+ i +"a red envelope:"+ Money +"yuan, Balance:"+ TotalAmount +"Yuan"); - } -Console.WriteLine ("Section"+ num +"a red envelope:"+ TotalAmount +"yuan, balance: 0 Yuan"); - + Console.readkey (); - } + A /// <summary> at ///generates a random number of double in the set range - ///Eg:_random. Nextdouble (1.5, 2.5) - /// </summary> - /// <param name= "random" >Random</param> - /// <param name= "minidouble" >generate the maximum number of random values</param> - /// <param name= "maxidouble" >generate minimum values for random numbers</param> in /// <returns>returns 0 when random equals null;</returns> - protected Static DoubleNextdouble (Random random,DoubleMinidouble,Doublemaxidouble) to { + if(Random! =NULL) - { the returnRandom. Nextdouble () * (maxidouble-minidouble) +minidouble; * } $ ElsePanax Notoginseng { - return 0.0d; the } +}
C # random Red envelope algorithm