Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1992|回复: 9

[已解决]怎么能随机产生出错误率不低于80%的随机答案?

[复制链接]
发表于 2013-11-8 13:42 | 显示全部楼层 |阅读模式
大家好,附件有100个选择题答案,怎么能随机产生出错误率不低于80%的随机答案?
最佳答案
2013-11-8 14:20
本帖最后由 xdragon 于 2013-11-8 15:19 编辑
  1. Sub t()
  2. Dim arr(), i As Byte, rnds As Byte, k As Byte, str As String
  3. arr = Sheets("sheet1").Range("A1").Resize(2, 100).Value
  4. rnds = Int(20 * Rnd + 1) '设置随机错误的题数
  5. For i = 1 To rnds
  6.   k = Int(100 * Rnd + 1)
  7.   If InStr(1, str, k) > 0 Then
  8.     i = i - 1
  9.   Else
  10.     arr(2, k) = Mid(Replace("ABCD", arr(2, k), ""), Int(3 * Rnd + 1), 1) '设置随机错误答案
  11.   End If
  12.   str = "," & k & "," & str
  13. Next
  14. Range("A4:CV5") = arr '这里是导出的区域,可以随意选哈
  15. End Sub
复制代码

Book1.rar

1.84 KB, 下载次数: 16

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-11-8 13:49 | 显示全部楼层
用VBA 可以解决,
不低于80%,不高于多少?

评分

参与人数 1 +1 收起 理由
三羧酸 + 1 赞一个!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-11-8 13:55 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-11-8 14:14 | 显示全部楼层
请2楼的费心给解决一下!谢谢!
回复

使用道具 举报

发表于 2013-11-8 14:18 | 显示全部楼层
三羧酸 发表于 2013-11-8 14:14
请2楼的费心给解决一下!谢谢!

随机到80%以上正确率的各分数之间,有没有概率要求?比如各个正确率的概率相等还是不管呢??
回复

使用道具 举报

发表于 2013-11-8 14:20 | 显示全部楼层    本楼为最佳答案   
本帖最后由 xdragon 于 2013-11-8 15:19 编辑
  1. Sub t()
  2. Dim arr(), i As Byte, rnds As Byte, k As Byte, str As String
  3. arr = Sheets("sheet1").Range("A1").Resize(2, 100).Value
  4. rnds = Int(20 * Rnd + 1) '设置随机错误的题数
  5. For i = 1 To rnds
  6.   k = Int(100 * Rnd + 1)
  7.   If InStr(1, str, k) > 0 Then
  8.     i = i - 1
  9.   Else
  10.     arr(2, k) = Mid(Replace("ABCD", arr(2, k), ""), Int(3 * Rnd + 1), 1) '设置随机错误答案
  11.   End If
  12.   str = "," & k & "," & str
  13. Next
  14. Range("A4:CV5") = arr '这里是导出的区域,可以随意选哈
  15. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
三羧酸 + 1

查看全部评分

回复

使用道具 举报

发表于 2013-11-8 14:21 | 显示全部楼层
数据显示在4 5 2行,
A7 公式是为了显示正确答案个数

312974-VBA-不重复随机数.rar (10.04 KB, 下载次数: 8)
回复

使用道具 举报

 楼主| 发表于 2013-11-8 14:37 | 显示全部楼层
谢谢2楼的朋友,可能我没说清楚,这个VBA产生的空白处应随机产生出一个随机错误答案!不能留出空白!请帮忙再修改一下!
回复

使用道具 举报

发表于 2013-11-8 14:44 | 显示全部楼层
我的办法:
  1. Sub 成绩()
  2.     Dim ar, re(1 To 1, 1 To 100), arr
  3.     Dim count As Integer
  4.     ar = Sheets(1).Range("A1").CurrentRegion
  5.     t = Rnd() * 0.2
  6.     arr = Array("A", "B", "C", "D")
  7.     Do Until count > 80
  8.         For i = 1 To UBound(ar, 2)
  9.             temp = Rnd()
  10.             If temp > 0.2 - t Then
  11.                 count = count + 1
  12.                 re(1, i) = ar(2, i)
  13.             Else
  14.                 Do
  15.                     re(1, i) = arr(Int(Rnd() * 4))
  16.                 Loop Until re(1, i) <> ar(2, i)
  17.             End If
  18.         Next i
  19.     Loop
  20.     Sheets(1).Range("A10").Resize(1, 100) = re
  21. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-11-9 11:12 | 显示全部楼层
问题又来了,楼上的各位朋友帮助的是生成一行随机产生出错误率不低于80%的随机答案,现在,我想要多行,比如10行不同的答案,请问有办法吗?我把VBA改了半天,可是不会弄,大家给看看吧!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-23 19:03 , Processed in 0.594913 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表