随机概率数

问题:

111111 - 666666 里出随机数,要求


6个一样的数 1%
5个一样的数和4个四 3%
123456 5%
3个四 10%
4个一样的数除4个四 20%
1个四或2个四 30%
其它的 31% 控制随机数


思路:  先产生随意一个概率数,在随机产生这个概率数对应的数据


1.对概率数编号如下:

1
2
3
4
5
6
7
1%
3%
5%
10%
20%
30%
31%
 
2.创建一个100元素的数组如下:

var snarray=[
    1,2,2,2,3, 3,3,3,3,4,
    4,4,4,4,4, 4,4,4,4,5,
    5,5,5,5,5, 5,5,5,5,5,
    5,5,5,5,5, 5,5,5,5,6,
    6,6,6,6,6, 6,6,6,6,6,
    6,6,6,6,6, 6,6,6,6,6,
    6,6,6,6,6, 6,6,6,6,7,
    7,7,7,7,7, 7,7,7,7,7,
    7,7,7,7,7, 7,7,7,7,7,
    7,7,7,7,7, 7,7,7,7,7,
];

随机  0-99,结果为 n,这样,可以确保  编号出现的概率分别为 1%  3%  5%  10%  20%  30%  31%

那么得到编号为:  var sn=snarray[n];



建立字典:
 
key (int)
value (int[])
1
对应的数据有  111111   222222   333333   444444   555555  666666
2
对应的数据有   5个相同的数且另一个不是这几个相同的数  or   4个4且其他两个数不是4
3
123456
4
 3个4且其他数据不是4
5
 4个一样的数且单个数字不是4
6
 1个4或者2个4的数字
7
 其他的数据!


得到的 编号 sn  肯定是  1-7,然后在字典里取得Value

在value中取任意一个数据,即可

注:字典里value需要针对每一项设计产生规则数据的算法!




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值