求一个抽奖的算法 , 在下面数组的 8个对象中 抽奖, 根据 后面的 中奖概率,返回 a,b,c
中奖概率这个 可以不遵循 全加起来为 100%
[
{"a", 20.00%},
{"b", 20.00%},
{"c", 20.00%},
{"d", 10.00%},
{"e", 10.00%},
{"f", 10.00%},
{"g", 10.00%},
{"h", 0.05%},
]
求一个抽奖的算法 , 在下面数组的 8个对象中 抽奖, 根据 后面的 中奖概率,返回 a,b,c
中奖概率这个 可以不遵循 全加起来为 100%
[
{"a", 20.00%},
{"b", 20.00%},
{"c", 20.00%},
{"d", 10.00%},
{"e", 10.00%},
{"f", 10.00%},
{"g", 10.00%},
{"h", 0.05%},
]
可以假定总的概率为1-100 a为1-20 b为21-40等等 h取一个数,比如78 这样是最简单的
可以加工一下,比如随机到78,就在随机一次,如果在中,就在随机一次,设置一个最大重随机次数,比如5次,如果5次都随机为78就算中大奖,这个最大重随机次数根据你的实际情况进行设置
a-h总中奖概率为100,那么可以将a-h看成一条直线,根据中奖概率,a = 1-20,b=21-40,c=41-60, d=61-70,e=71-80,。这样随机一个1-100的数字,看数字位于哪个区间即可。
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答718 阅读✓ 已解决
2 回答2.3k 阅读
1 回答687 阅读✓ 已解决
程序思路:
1.中奖概率的理解:概率越大,被抽中的几率就越大,假设字母a-h(可以有重复)总个数为S,字母a的的个数为A,那么字母a被抽中的概率为:p = A/S
2.如题目所给出的字母对象及概率。假设字母a-h总个数为2000,那么根据概率,a应为400个,b为400个,c为400个,d为200个,e为200个,f为200个,g为200个,h为1个。
3.将所有字母想象成球,放在一个口袋里,随机抽取。程序语言说明为,将字母全部存储在一个数组里,每次随机一个数作为下标,根据下标所得的字母就是抽取的结果。
简单编程(python)