指定范围内生成不重复的随机数_Excel自制双色球机选工具教程,数据不重复,可直接投注...

有时候,想自己做一个双色球机选工具,却不知道如何下手,网上很多做法都不符合要求,有很多重复数据,大都用了一个简单的randbetween,这个函数是产生指定范围的随机数,可是产生的数据有重复现象,本文就是对这一现象的改进做法。话不多说,直接看教程。

b84ba2e86d1199b9a8a158d49408f2f4.png

本文制作的双色球机选工具的特点:1,产生的一组数据之间不重复完全符合开奖结果,可以直接用于投注;2,可以实现多注,比方说100注,甚至1000注,都是秒产生。

s1:如图在A2单元格里输入=rand(),产生一个随机数。

abaaeafc8f0d5258218603f315d61bd7.png

s2:将公式拉至AG2,产生33个随机数。

d5b22ffa3bcb3a9d44f75fab5ac20c85.png

通过以上2步便产生33个随机数

s3:在单元格AI2里输入=RANK(A2,$A2:$AG2),然后将公式拉至AN2,这样便会产生如图的6红号码

4559b1c3e4609c5afdf077e4393d849f.png

通过以上方式产生的6红,不存在重复现象,符合双色球号码规则。

细看,产生的6红没有按升序排列,给人一种乱七八糟的感觉,下面我们继续处理:

s4:在单元AO2里输入=SMALL($AI2:$AN2,COLUMN(A1))

small函数是取指定范围第几小的数,$AI2:$AN2是上步产生的6红区域,COLUMN(A1)表示提取单元格A1的列号1,往右拉的时候,此值依次为1,2,3,4,5,6,表示6红区域的第1小,第2小。。。第6小,这样就实现了对6红的排序,下图是往后拉过后的效果:

9453be639ea061f8033c13a9be0c2be8.png

通过上步的操作,6红进行了排序,这么一来便产生了一注6红号码

下面我们通过拉的方式产生多注,

选中单元格A2:AT2,往下猛拉,想要多少拉多少,如下图:

71d70d816f345c8f9f5abf8040ce6319.png

带边框区域就是我们想要的效果,为清爽起见,把多余的部分隐藏效果如下:

012853332ca206f4b6ec164ee4ed8020.png

至于蓝球就很好产生了,在AV2里输入=int(rand()*16+1),下拉

下面的就是美化工作了,整理后结果如下22注:

c37a188e6241304efb56d12c50119668.png

对已经产生的号码不满意的话,可按功能键F9,它会重新生成新号。

下次出如何做在指定几个数范围内(比方说01 02 05 08 09 15 17 19 20 22 25 27 30 33)机选产生投注结果。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
生成重复随机数可以采用以下两种方法: 1. 使用java.util.Random类生成随机数,并将生成随机数存储到一个Set或者List容器中,每次生成新的随机数时都先检查容器中是否已经存在该随机数,如果已存在则重新生成,直到生成一个不在容器中的随机数。 示例代码: ```java import java.util.HashSet; import java.util.Random; import java.util.Set; public class RandomUtil { private static Set<Integer> set = new HashSet<>(); private static Random random = new Random(); private static final int MAX_NUM = 100; public static int generateRandom() { int randomNum; do { randomNum = random.nextInt(MAX_NUM); } while (set.contains(randomNum)); set.add(randomNum); return randomNum; } } ``` 2. 使用java.security.SecureRandom类生成随机数,并将生成随机数存储到一个数组中,每次生成新的随机数时,从数组中随机取出一个数,并将该位置上的数与数组末尾的数交换位置,然后缩小数组范围,以避免重复。 示例代码: ```java import java.security.SecureRandom; public class RandomUtil { private static final int MAX_NUM = 100; private static int[] arr = new int[MAX_NUM]; private static SecureRandom secureRandom = new SecureRandom(); private static int size = MAX_NUM; static { for (int i = 0; i < MAX_NUM; i++) { arr[i] = i; } } public static int generateRandom() { if (size == 0) { size = MAX_NUM; } int index = secureRandom.nextInt(size--); int randomNum = arr[index]; arr[index] = arr[size]; arr[size] = randomNum; return randomNum; } } ``` 以上两种方法都可以生成重复随机数,但是第二种方法使用了安全的随机数生成器,更加安全可靠。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值