Python 小白求助

  • 安乃金
    想用python 弄个双色球随机程序,现学现弄,一个多礼拜了也弄成,恳请出手相助。
    问题如下,
    我把33个红球分成了八组,即
    (01,07,21,22),(08,09,23,24),(02,10,26,27),(11,12,28,29),
    (03,13,31,32),(14,15,20,25),(05,06,18,19),(04,16,17,30,33)。
    我想随机得到六个数字,但是这六个数字要包含在上面的四到五组内,不能多于也不能少于四到五组。
    请问如何用python 实现。
  • o
    ouyuu
    简单点操作:
    1,随机6个数
    2,计算6个数在8个分组中占据的分组数
    3,如果分组数为4或5,break,反之continue
  • x
    xzap
    把这些分组合并成一个大组,然后random.sample(大组,random.randint(4,5))选出4或5组。然后用for遍历每组用random.choice选一个数。最后合并组再随机出一两个数就可以了
  • x
    xzap
    1. import random
    2. ok=[]
    3. a=[["01","07","21","22"],["08","09","23","24"],["02","10","26","27"],["11","12","28","29"],["03","13","31","32"],["14","15","20","25"],["05","06","18","19"],["04","16","17","30","33"]]
    4. b = random.randint(4,5)
    5. c = random.sample(a,b)
    6. c2 = []
    7. for i in c :
    8. d = random.choice(i)
    9. ok.append(d)
    10. i.remove(d)
    11. c2 += i
    12. for i in range(6-b):
    13. e = random.choice(c2)
    14. c2.remove(e)
    15. ok.append(e)
    16. print (",".join(ok))
    复制代码
  • 安乃金
    万分感谢,礼拜天可以实战几注啦,哈哈。
    以这个为基础,以后可以琢磨加上一些其它想法。
    再次感谢。
  • c
    cookite_li
    马个克。 还是没看明白哪步能保证 4到5组。
  • c
    cookite_li
    另外, 楼主, 你这么分8组是基于什么考虑?分享下不?
  • x
    xzap
    回复6#cookite_li

    b = random.randint(4,5)
    c =random.sample(a,b)
    第一行随机得到4或5。第二行根据第一行的随机数抽取4或5组数
  • g
    gwgb
    分8组 的依据? iOS fly ~
  • w
    wenxisyt
    不管你怎么随机,也改变不了随机的概率。