生成一个1-10的随机数,如果随机数<=3给红包,否则就给卡券 这样能不能实现3:7的比例?
不能,首先要看生成多少个数据,比如你要生成100个数字,那就是30个有红包,70个没红包,这时候在1~100 随机生成30个数字,这30个数字就按插在100个数字当中就好了
那这样呢,3/7=0.42
每次查询出红包数量和卡券数量
红包/卡券>0.42就卡券 否则就红包
@大da脸: 没看明白,查询是啥意思?
@jqw2009: 每次发包前我从数据库查询下已获得红包的访客和 获得卡券的访客先计算下比例
@大da脸: 你这样做就不是随机了,这个可以事先定好了谁能得红包,谁能得卡券,不需要实时计算的,比如事先已经定好了,第5个人得红包,第9个人得红包等等,然后100个数组,一个个取,取到第5个就给他红包,以此类推
@jqw2009: 红包:卡券比例是3:7,参与的人数没有上限(人数不固定的),都是一次参与一个,不是多人同时参与的
@大da脸: 那就按比例来啊,比如以100为单位,100个里面有30个是红包,100个数组取完了,在重新生成100个,里面有30个红包,以此类推
@jqw2009: 我似乎没理解,如果按照这种说法是不是事先需要知道参与的总人数?
@大da脸: 不需要得,多少人都无所谓,比如以100人为单位,今天来了1000人,就会循环生成10次,今天来了5000人,就会循环生成50次,一次类推
@jqw2009: 具体思路应该怎么写?
@大da脸: 已经给你思路了啊,可以加我微信聊吧
@jqw2009: 嗯
@大da脸: 微信是?
如果生成非非常多的记录,我觉得可以,没看出了有啥问题,当记录数趋于无穷大时,这个比例肯定是趋于3:7的。但是如果你需要确保在生成较少记录的时候能精确保证比例是3:7,那就不行了