日期:2014-05-17  浏览次数:20849 次

C#的一个随机算法问题请教
20130101到20130130有30天内的订单号, 第一天的订单号是1-100,第2天是101-200,.....依次类推,订单号对应付款时间比如第一天付款的订单,每个付款时间对应1-100个订单号 中 M(M="1-100中的一个随机数")个随机出来的订单号,第2天把第一天的1-100个订单号中未付款的订单号在随机取出A(第一天未付款订单号的个数随机取其中一个为A)个放在第2天来付款,其中第二天101-200订单号中随机付款了N(N="101-200中的一个随机数")个,第3天把第一天(1-100中未付款 全付完)和第2天未付完的订单号X(X="第2天未付款订单号的个数随机取其中一个")未全付完,其中第3天201-300中的订单随机付款M(M="201-300中的一个随机数")个,依次类推每逢3的倍数都要把前1天的单付完。
怎么生成呀
比如这就是20130101号的时间随机的数 



如:1到100范围内的数 随机取2次 到第3次后取完这100个数,第1次取其中N个第2次取其中M个 第3次都得100个数中剩下的数,每次取都不能重复("比如:1,2,3,4,5,6,7,8,9,10 这10个数 第一次我随机取了3个=‘3==2014010156,5==2014010132,1==2014010154’,第2次随机取了5个=‘2==2014010256,4==2014010286,8==2014010232,9==2014010216,7==2014010242’,第3次=‘6==2014010352,10==2014010321’;==后面分别对应时间")。第一次取的每个数对应20140101N,  第2次取的数对应20140102N,第3次取的数对应20140103N,N随机可变防止时间重复.101-200范围内的数依次和上面一样的取,时间不断累加天数此时的时间从20140104开始依次类推....

------解决方案--------------------
没兴趣关心你的业务,别指望找别人给你当苦力。

提取出你真正不会的地方,比如不重复取随机数怎么取不会。
------解决方案--------------------
不要先入为主的将自己的认识分析强加让别人实现,你只要说出,现在企业情况如何,要处理什么数据,最后要达到什么效果即可。大家应该会有更好的建议。
------解决方案--------------------
随机个数定么?有没有可能第一天直接100张订单完结的情况?
如果限量,比如33个
随机数按100取模,订单号为 取模结果+ 100X天数(当天为0,第二天为1),取出数后订单打上“已结”标志,如果生成的订单号已经存在“已结”标志,直接返回,筹够当天指定条数即可,第二天同理。
第三天,将未设置标志的订单全部处理即可。

PS:猜不到什么业务要这样干,说实话效率很低效
------解决方案--------------------
应该说“组”比较好理解些,
第1组 :1天 2天 3天 单号:(组号)0*100+ 随机数%100
第2组 :2天 3天 4天 单号:(组号)1*100+ 随机数%100
。。。
每组中分别有这组的第一天、第二天、第三天。
------解决方案--------------------
先留个脚印,明天来看