求一个抽奖的算法,在下面数组的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%},]
2 回答
暮色呼如
TA贡献1853条经验 获得超9个赞
程序思路: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]
添加回答
举报
0/150
提交
取消