彩票数字生成器

按等概率不重复抽样生成双色球与大乐透号码,给出组合数、单注一等奖概率与各奖级对照表。号码只是随机排列,不代表任何预测。

生成选项
仅供娱乐:本页只是把号码池按等概率随机排列,不预测开奖结果、不提高任何中奖概率,也不构成任何购彩建议;请通过官方渠道购彩,理性参与,未成年人不得购买彩票。

提示:在「生成注数」或「排除号码」输入框里按 Enter 可直接生成;每次点按钮都是一次全新的独立抽样,与上一次结果无关。

使用方法

  1. 在「玩法」里选双色球或大乐透。两者结构不同:双色球是红球 33 选 6 加蓝球 16 选 1(共 7 个号),大乐透是前区 35 选 5 加后区 12 选 2(共 7 个号),切换玩法后号码范围和每区个数会一起改变。
  2. 在「生成注数」填 5(示例值),允许 1~50 的整数。一注就是一个完整号码组合,例如双色球的一注是「6 个红球 + 1 个蓝球」。
  3. 想避开某些号码时,在「排除号码」里按 03,17,29 这样的格式填,最多 5 个。被排除的号码会从对应玩法的红球(或前区)号池里剔除,剩余号码仍然等概率抽取。
  4. 两个选项默认都勾选:「注内号码升序排列」让每注号码从小到大排列,便于与开奖号码逐位比对;「注与注之间不重复」保证同一批里不会出现两注完全相同的号码。
  5. 点「生成号码」生成,或在输入框里直接按 Enter。「复制全部」按行带走全部号码;「导出 CSV」下载带 BOM 的表格文件,用 Excel 打开不会乱码;「复制对照表」把下方奖级概率表按 TSV 复制,可直接粘进电子表格。

这个工具能解决什么问题

一是把「随手写几个号」换成可验证的等概率抽样。手写号码往往落在 1~31(生日、纪念日),双色球红球最大到 33、大乐透前区最大到 35,手写很容易永远不碰 32 以上的号,分布明显偏斜。这个彩票数字生成器对红球/前区的每一个号码都给出相同的被抽中机会。

二是批量准备号码,避免人工重复。要在多期投注里一次写 20、30 注时,手工编号很容易写重、写漏、写超范围。「注与注之间不重复」勾选后,程序用集合判重剔除完全相同的组合,不用事后核对。

三是把中奖难度换算成看得懂的数字。很多人对「一千七百万分之一」没有直观概念,本页把它换算成「约合 1 / 17,721,088」「每天买一注连续 50 年约 0.103%」这类可比较的量,帮你在做投入决定前先看清数量级。

四是快速排除特定号码。想避开上一期开出的号、或不想用某些数字时,把它们填进「排除号码」,剩余号池重新计算组合数后继续等概率抽样,整个过程仍然是可复现的。

本页不做这些事:不预测走势、不分析冷热号、不做遗漏统计、不承诺任何中奖可能。要生成其它随机序列,可以用页面底部的「随机数字生成器」「随机顺序生成器」;要把已有名单随机排成队列,可以用「列表随机打乱」。

生成原理:区间划分与 Fisher–Yates 不重复抽样

结构决定算法。双色球与大乐透都属于「分区不重复抽样」:同一区内不能重复取号,而且每区抽取个数是固定的。这个彩票数字生成器先用一张结构表把玩法拆成区间,双色球记为 red: 1–33 取 6、blue: 1–16 取 1;大乐透记为 front: 1–35 取 5、back: 1–12 取 2。代码对每个区间分别调用同一个抽样函数,所以两种玩法共用一套逻辑,只有参数不同。

抽样用部分 Fisher–Yates 洗牌。标准做法是把 1 到 N 的号池按顺序摆好,然后从下标 0 开始,每一步在「当前位置到末尾」之间随机挑一个下标交换过来,重复 k 次就得到 k 个互不相同的号码。这种方式和「随机抽一个、抽到重的就重抽」等价,但不会因为重复而空转,抽取次数恰好是 k 次。注意它不是 sort(function () { return Math.random() - 0.5 })——后者在多数浏览器引擎里会退化成分布明显不均的伪洗牌,号码会出现可见偏斜。

随机源用拒绝采样消除取模偏差。本工具取随机数用 crypto.getRandomValues(new Uint32Array(1)),得到 0~4294967295 的均匀整数。直接写 n % 33 会因为 4294967296 不能被 33 整除而让前若干个数多出现一次;所以先算接受上限 Math.floor(4294967296 / 33) * 33 = 4294967241,落在 4294967241 之后的取值丢弃重抽,接受率 99.9999987%,换来严格均匀的下标。

组合数从区间直接相乘得到。双色球红球是 33 选 6 的组合数 C(33,6) = 1,107,568,蓝球 16 选 1 是 16 种,两者独立相乘得总组合数 1,107,568 × 16 = 17,721,088;大乐透前区 C(35,5) = 324,632、后区 C(12,2) = 66,总组合数 324,632 × 66 = 21,425,712。这也解释了为什么彩票设计成「分区 + 不重复」:每区不允许重复、区与区独立,才能让每一注等势——即每种组合出现的概率完全相同。

依据的规则。号码取值范围与开奖结构遵循《中国福利彩票「双色球」游戏规则》(红球 1–33 选 6,蓝球 1–16 选 1)与《超级大乐透游戏规则》(前区 1–35 选 5,后区 1–12 选 2);洗牌遵循 Fisher–Yates(也称 Knuth shuffle)洗牌算法;随机数遵循 W3C Web Cryptography API 的 getRandomValues 定义。

完整示例(数值仅作演示)

示例条件与打开页面时的默认值一致:玩法双色球、生成 5 注、勾选升序与注间去重、不排除号码。此时号池为红球 33 个、蓝球 16 个,未加任何限制的组合数为:

把默认条件举例说明:假设这次生成的第 1 注是下面这一组,它就是「红球 6 个互不相同且在 1–33 内、蓝球 1 个且在 1–16 内」的那种结构,共 7 个号:

第 1 注  05 11 18 24 29 33  +  07
第 2 注  02 09 14 21 27 31  +  12
第 3 注  03 08 16 22 28 30  +  04
第 4 注  01 07 13 19 25 32  +  15
第 5 注  06 10 17 23 26 33  +  09

如果改成大乐透,结构换成前区 35 选 5、后区 12 选 2,一注仍是 7 个号,但总组合数变成 324,632 × 66 = 21,425,712,约 2.14×107 种,比双色球多出约 21%。这些数字全部由下方对照表逐行列出,你可以按 C(n,k) 自行复核。

玩法结构、组合数与各奖级概率对照表

下表按奖级逐行列出中奖条件、对应的组合数、单注概率与「约合多少分之一」。默认显示前 12 行,点「加载更多」看全部 15 行;「导出 CSV」下载带 BOM 的全表。

玩法奖级中奖条件组合数单注概率约合
双色球一等奖6 红 + 1 蓝15.643×10−81 / 17,721,088
双色球二等奖6 红 + 0 蓝158.465×10−71 / 1,181,406
双色球三等奖5 红 + 1 蓝1629.142×10−61 / 109,389
双色球四等奖5 红 + 0 蓝 或 4 红 + 1 蓝7,6954.342×10−41 / 2,303
双色球五等奖4 红 + 0 蓝 或 3 红 + 1 蓝137,4757.758×10−31 / 129
双色球六等奖2/1/0 红 + 1 蓝1,043,6405.889×10−21 / 17

怎么读这张表
  • 「组合数」是在本玩法全部 17,721,088(或 21,425,712)种组合里,满足该奖级条件的组合有多少个。例如双色球二等奖要求 6 红全中、蓝球不中,蓝球有 15 种不中的选法,所以是 15 个组合。
  • 「约合」把概率换算成「平均每多少注出一个」,比百分数更直观:双色球六等奖约合 1 / 17,一等奖约合 1 / 17,721,088。
  • 各奖级互斥且穷尽所有中奖组合,把「组合数」一列相加,双色球得 1,188,988(占 6.709%),大乐透得 1,429,197(占 6.670%)。

输入范围、边界与取整说明

常见问题

用这个工具选号,中奖概率真的会提高吗?

不会。开奖是等概率的独立事件,任何一注号码在每一期被开出的概率都相同,与你用什么方法选号无关。本工具只是把「人选」换成「机器等概率抽」,避免手写号码偏在 1–31 这类人为偏差,它不能预测结果,也不能改变 1 / 17,721,088 这个概率。

为什么双色球和大乐透的总组合数差这么多?

因为选号范围不同。双色球红球 C(33,6) = 1,107,568 乘蓝球 16 得 17,721,088;大乐透前区 C(35,5) = 324,632 乘后区 C(12,2) = 66 得 21,425,712。前区号码更多、后区要选两个,所以大乐透的一等奖概率略低(4.667×10−8 对 5.643×10−8)。

「注与注之间不重复」和「注内号码升序」有什么区别?

前者约束两注之间不能完全相同,作用在整批结果上;后者只改变单注内部号码的书写顺序,是 6 个(或 5 个)号按从小到大排还是按抽取顺序排。一个影响你拿到几注不同的号,另一个只影响这注号看起来顺不顺眼。

排除几个号码,是不是更容易中?

不是。排除号码会让组合空间变小,但你也同时排除了被排除号码真正开出的那些结果,命中概率并不会上升。举例:双色球排除 3 个红球后总组合从 17,721,088 降到 9,500,400,看起来「空间小了」,但这时你中一等奖的前提变成「开奖号里不含你排除的那 3 个」,两者相抵,实际概率不升反微降。

「热号」「冷号」「走势图」对选号有帮助吗?

对提高概率没有帮助。每一期开奖都是独立的等概率事件,历史出现频率不会改变下一期的分布;某个号码「很久没出」也不代表它「该出了」。走势图能帮你避开很多人共同选的号,从而万一中奖时少分一些奖金,但这属于改变收益结构,不是提高中奖概率。

用生日选号有什么问题?

生日只覆盖 1–31,而双色球红球最大到 33、大乐透前区最大到 35,用生日选号会永远避开 32 及以上的号码,分布被人为截断。更重要的是,很多人的生日集中在上半年、集中在几个月份,一旦中奖,与你分同一个奖池的人更多,单注奖金会被摊薄。

生成的号码会上传或保存吗?

不会。随机数来自浏览器 crypto.getRandomValues,抽样、排序、去重和导出全部在当前页面完成,没有任何网络请求,也不写入浏览器存储;刷新页面后结果区会回到那段固定的演示值。想自己验证,可打开开发者工具的 Network 面板观察点击生成时没有新请求。

导出的 CSV 用 Excel 打开为什么能正常显示中文?

因为导出时在文件开头写入了 UTF-8 BOM(字节 EF BB BF),Excel 读到它就会按 UTF-8 解析,不会把中文显示成乱码。也正因如此,本页只导出 CSV/TSV,不导出「带 BOM 的 JSON」——JSON 规范不允许开头出现 BOM,否则 JSON.parse 会直接报错。

相关工具