Python随机生成 k 注双色球

下面以逐步增加代码形式演示

调用随机库

import random

定义红球样本

# 初始化红球样本
sample_redboll = [i for i in range(1, 34)]

定义蓝球样本

# 初始化蓝球样本
sample_blueboll = [i for i in range(1, 16)]

随机获取6个红球


def choice_redboll(src: list)->list:
   '''
  定义函数返回,随机样本红色球,这里不能使用random.choices(),
  因为random.choices()是每次从样中取出一个然后又放回去,
  再取一个,所以会返回重复值
  '''
   redboll = random.sample(src, k=6)

   return sorted(redboll)

随机获取1个蓝球


def choice_blueboll(src: list)->str:
   '''
  定义函数这里取出一个蓝色球
  '''
   blueboll = random.choice(src)
'''
下面的判断完全是为了后面输出格式好看,没其他作用
即:
1 显示为 01
2 显示为 02
'''
   if blueboll < 10:
       return f"0{blueboll}"
   else:
       return f"{blueboll}"

排序输出红球


def get_sorted_boll(src: list)->str:
   '''
  定义排序输出, 其实可以不用这个函数,
  但是为了好看,还是排序并且格式化输出
  '''
   sorted_bools = ""
   for i in src:
       # 小于10的添加前缀0
       if i < 10:
           sorted_bools += f"0{i} "
       else:
           sorted_bools += f"{i} "
       # 返回处理结果
   return sorted_bools

红球和蓝球组合输出


def random_selection(k: int)->list:
   '''
  定义函数,拼接红球和蓝球, 并格式化输出,
  k,表示需要生成的组数
  '''
   result = []
   for i in range(k):
       # 格式化
       result.append(f"红球: {get_sorted_boll(choice_redboll(sample_redboll))} 蓝球: {(choice_blueboll(sample_blueboll))}")
   # 去重复set()一下组合
   return set(result)

定义一个函数写入文本


def get_result(bolls: str) ->str:
   # 写入文本文档中
   with open("./result.txt", "a", encoding="utf8") as f:
# 写入组合
       f.write(bolls)
       # 换行输出
       f.write("
") 

调用函数


# 调用函数
if __name__ == "__main__":
   # 输入需要生成的数量 k 注
   k = 100
   for (i, item) in enumerate(random_selection(k), start=1):
       print(f"第{i}注 {item}")
       get_result(f"第{i}注 {item}")

完整代码

import random

# 初始化红球样本
sample_redboll = [i for i in range(1, 34)]

# 初始化蓝球样本
sample_blueboll = [i for i in range(1, 16)]


def choice_redboll(src: list)->list:
   '''
  定义函数返回,随机样本红色球,这里不能使用random.choices(),
  因为random.choices()是每次从样中取出一个然后又放回去,
  再取一个,所以会返回重复值
  '''
   redboll = random.sample(src, k=6)

   return sorted(redboll)


def choice_blueboll(src: list)->str:
   '''
  定义函数这里取出一个蓝色球
  '''
   blueboll = random.choice(src)
   '''
      下面的判断完全是为了后面输出格式好看,没其他作用
      即:
          1 显示为 01
          2 显示为 02
      '''
   if blueboll < 10:
       return f"0{blueboll}"
   else:
       return f"{blueboll}"


def get_sorted_boll(src: list)->str:
   '''
  定义排序输出, 其实可以不用这个函数,
  但是为了好看,还是排序并且格式化输出
  '''
   sorted_bools = ""
   for i in src:
       # 小于10的添加前缀0
       if i < 10:
           sorted_bools += f"0{i} "
       else:
           sorted_bools += f"{i} "
       # 返回处理结果
   return sorted_bools


def random_selection(k: int)->list:
   '''
  定义函数,拼接红球和蓝球, 并格式化输出,
  k,表示需要生成的组数
  '''
   result = []
   for i in range(k):
       # 格式化
       result.append(f"红球: {get_sorted_boll(choice_redboll(sample_redboll))} 蓝球: {(choice_blueboll(sample_blueboll))}")
   # 去重复set()一下
   return set(result)


def get_result(bolls: str) ->str:
   # 写入文本文档中
   with open("./result.txt", "a", encoding="utf8") as f:
               # 写入组合
       f.write(bolls)
       # 换行输出
       f.write("
") 




# 调用函数
if __name__ == "__main__":
   # 输入需要生成的数量 k 注
   k = 100
   for (i, item) in enumerate(random_selection(k), start=1):
       print(f"第{i}注 {item}")
       get_result(f"第{i}注 {item}")

输出结果

第1注 红球: 17 24 27 28 30 33 蓝球: 15
第2注 红球: 04 07 10 18 22 28 蓝球: 08
第3注 红球: 08 15 17 25 27 28 蓝球: 06
第4注 红球: 01 09 12 17 19 27 蓝球: 13
第5注 红球: 01 06 14 26 28 31 蓝球: 06
第6注 红球: 04 06 11 18 20 25 蓝球: 07
第7注 红球: 01 09 20 22 27 29 蓝球: 02
第8注 红球: 02 06 11 15 16 20 蓝球: 07
第9注 红球: 09 16 18 20 26 29 蓝球: 13
第10注 红球: 09 14 20 24 31 32 蓝球: 04




Python随机生成 k 注双色球

Python随机生成 k 注双色球

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章