一个抽奖的算法

求一个抽奖的算法,在下面数组的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%},
]
牛魔王的故事
浏览 890回答 2
2回答

暮色呼如

程序思路:1.中奖概率的理解:概率越大,被抽中的几率就越大,假设字母a-h(可以有重复)总个数为S,字母a的的个数为A,那么字母a被抽中的概率为:p=A/S2.如题目所给出的字母对象及概率。假设字母a-h总个数为2000,那么根据概率,a应为400个,b为400个,c为400个,d为200个,e为200个,f为200个,g为200个,h为1个。3.将所有字母想象成球,放在一个口袋里,随机抽取。程序语言说明为,将字母全部存储在一个数组里,每次随机一个数作为下标,根据下标所得的字母就是抽取的结果。简单编程(python)#usr/bin/python#-*-coding=utf-8-*-#初始化data=[["a",20.00%],["b",20.00%],["c",20.00%],["d",10.00%],["e",10.00%],["f",10.00%],["g",10.00%],["h",0.05%],]#为了保证字母个数为非负整型,假设h为1个,总个数为2000个all=2000arr=[]foriinrange(len(data)):letter=data[i][0]num=data[i][1]*allforjinrange*(num):arr.append(letter)#产生一个随机索引index=random.randint(0,len(arr))#根据随机索引寻找字母result=arr[index]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript