excel高手请进:如何用EXCEL进行随机抽样,不可产生相同的随机种子.

来源:百度知道 编辑:UC知道 时间:2024/05/22 17:19:05
例:现有1000人,我需要随机抽100人做样本.用RAND函数可产生随机数,但是产生的随机数中可能会出现被抽重的人,如何避免该问题?

题目是 1 至 1000内, 选 100个不重复的随机数(要正整数)。
由于不重复的变量, 是要经循环程序去判断, 故单单写公式是不可解决。
最简单的方法, 是执行宏, 可用我刚写的以下代码, 100个不重复的变量便马上显示在A1:A100
Sub Randx()
Dim xx(1 To 1000) As Integer
For t = 1 To 100
rerand:
x = Int(Rnd() * 1000 + 1)
If xx(x) > 0 Then GoTo rerand
r = r + 1
Cells(r, 1) = x
xx(x) = r
Next
End Sub
如不懂VBA, 亦可用以下的蓄意循环运算办法, 但理论上不是100%会成功的, 而且太多数字, 会颇费时。
A1输入 =IF(SUM($B$1:$B$100)<>100,INT(RAND()*1000+1),A1)
B1 输入 =COUNTIF($A$1:$A4100,A1)
将A1:B1 下拖至 A100:B100
然后选 工具 → 选项 → 计算→ 重复运算 打勾→ 最高次数 10000次→确定
A1:B100 便会不停运算
如 运算 10000次后, 尚未成功, 可再按 F9, 再执行运算, 直至成功
如成功, 应即 马上将A1:A100 做黏贴值, B1:B100 清除内容, 及将重复运算脱勾, 完成。
请细心测试!

用下面的公式产生1000个随机数,可以确保无重复:
=INT(RAND()*10000000)
然后用"复制"->"选择性粘贴/数值"的方法将这列数值固定下来,将人员按该列数据排序,你任意取前100名(或后100名,也可以是中间的100名)都是随机抽取的。