随机不重复数字生成软件
2022-12-20阅读(807)
问:我想用excel生成5000个以内的随机不重复的5位数字。
- 答:可以利用VBA来生成5000个随机不重复的5位数字。
软件版本:Office2007
方法如下:
1.Alt+F11,输入代码如下:
Sub m()
For i = 1 To 5000 '1到5000循环,生成5000个数
eee:
Cells(i, "A") = Int(Rnd() * 50000) '随机生产一个小于50000的数
If Cells(i, "A").Value < 10000 Then GoTo eee '如果这个数小于10000,重新生成
If Application.WorksheetFunction.CountIf(Range("A:A"), Cells(i, "A")) > 1 Then GoTo eee '如果这个数已经存在了,也重新生成
Next i
End Sub
2.F5执行代码,返回Excel得到结果: - 答:选中A1:A5000,输入下面公式再按Ctrl + Shift + Enter 三键结束
=TEXT(MOD(SMALL(RANDBETWEEN(ROW(1:5000)^0,9999)*100000+ROW(1:5000),ROW(1:5000)),100000),"00000")
PS:公式单元格较多,该公式计算速度有点慢……
效果如图: - 答:在名称框内输入A1:A100000,回车选择此单元格区域。
输入=TEXT(ROW()-1,"00000")
CTRL+ENTER
※选择A列 复制后粘贴数值到A列
在B1中输入或复制粘贴下列公式
=RAND()
回车,双击B1右下角的填充柄(黑色小方块),填充公式到B100000。
选择B列任一非空单元格,单击升序或降序图标
A列即可得到不重复的00000-99999的值 - 答:=TEXT(MOD(SMALL(RANDBETWEEN(ROW(1:5000)^0,9999)*10000+ROW(1:5000),ROW(1:5000)),10000),"00000")
楼上的公式是100000,当然慢了,改成10000就会快很多呀。 - 答:以0-5000两种方法:
一、rand函数=ROUND(RAND()*5000,0)因为rand函数产生的是0-50的随机数,所以乘100就是0-5000了。又因为rand产生的小数位比较长,所以用round函数四舍五入取整。
二、randbetween函数=RANDBETWEEN(0,5000)不知道这个函数在03版里能不能用。一般这样生成的随机是不重复的。
Microsoft Excel是微软公司的办公软件Microsoft office的组件之一,是由Microsoft为Windows和Apple Macintosh操作系统的电脑而编写和运行的一款试算表软件。Excel 是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理、统计分析和辅助决策操作,广泛地应用于管理、统计财经、金融等众多领域。
问:如何自动生成随机不重复数字,数字大小范围自动控制的软件?
- 答:这种软件比较好实现,可以把指定范围内的数字先随机换顺序,然后取出,这样就不会重复。
问:按键精灵怎么随机生成1到12数字并且不重复
- 答:Dim RndNum(11)
Dim n, i, m, Result
'初始化数组
For i = 0 To 11
RndNum(i) = 0
Next
'生成1-12随机数
n = 0
Randomize
RndNum(0) = Int(12 * Rnd + 1)
While n < 11
Result = 0 '随机数重复标志,0表示不重复,1表示重复
Randomize
m = Int(12 * Rnd + 1)
'For循环判断生成随机数是否和前面重复
For i = 0 To n
If m = RndNum(i) Then
Result = 1
End If
Next
If Result = 0 Then
n = n + 1
RndNum(n) = m
End If
Wend
'数组RndNum存放结果,下面这一句是查看结果的
MessageBox Join(RndNum, "|") - 答:其实我觉得直接获取系统的时间秒数,再称一个倍数再除相关倍数控制在你想要的范围就好了,比如1~12的话,总共就60秒,那直接获取系统秒数再乘2除10就完了,当然如果你是要短时间内生成特别多随机数的话这个方法就不怎么可取了