首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >问卷系统随机问题

问卷系统随机问题
EN

Stack Overflow用户
提问于 2022-09-01 01:00:42
回答 2查看 76关注 0票数 0

如果有很多问题,选择五个而不重复怎么做?非常感谢你的帮助

我的GetQuestion代码

代码语言:javascript
运行
复制
Public Function GetQuestion( Byval QuestionNumber )
On Error Resume Next    
Dim MyUIWorkspace As New NotesUIWorkspace
Dim MyDoc As NotesDocument
Set MyDoc = MyUIWorkspace.CurrentDocument.Document

Dim Question
Dim LineNo
LineNo = 0
Forall Tmp In MyDoc.GetFirstItem( "Questions" ).Values
    If LineNo = QuestionNumber Then Question = Tmp
    LineNo = LineNo +1
End Forall
LineNo = 0
Forall Tmp In MyDoc.GetFirstItem( "Answers" ).Values
    If LineNo = QuestionNumber Then Answers = Tmp
    LineNo = LineNo +1
End Forall

Dim MyVar() As Variant
Redim MyVar(1)
MyVar(0) = Question
MyVar(1) = Answers

GetQuestion = MyVar

End Function

视图

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-01 03:44:23

创建一个函数从数组中获取任意数量的值.

代码语言:javascript
运行
复制
%REM
  WARNING: Modifies array argument
  n must be between <code>1</code> and < code>UBound(array) + 1</code>
%END REM
Function GetNRandomFromArray(array As Variant, ByVal n As Integer)
  Dim aRet(n - 1) As Variant
  Dim r as Integer
  Dim u as Integer

  u = UBound(array)
  For iRet = 0 To n - 1
    iFrom = Int(Rnd * (u + 1)) 'Random number from 0 to u
    aRet(iRet) = array(iFrom)
    If iFrom <> u Then array(iFrom) = array(u)
    u = u - 1 'decrement the number of questions to choose from in the next iteration
  Next iRet

  GetNRandomFromArray = aRet
End Function

现在你可以做了

代码语言:javascript
运行
复制
Dim aRandomQuestions As Variant
aRandomQuestions = GetNRandomFromArray(MyDoc.Questions, 5)

(注意:MyDoc.QuestionsMyDoc.GetFirstItem( "Questions" ).Values都返回一个值数组,这是一个快照.更改该数组不会自动影响字段的值。)

票数 3
EN

Stack Overflow用户

发布于 2022-09-01 02:42:19

先数数问题。你已经这么做了。LineNo变量中有计数。

接下来,用一个数组来表示问题,并将所有问题读入数组中。(请注意,您可以通过重复使用redim将前两个步骤组合为一个步骤。我倾向于不喜欢那样做,但这完全没问题。)

接下来,使五个整数的数组变暗。并使用随机化语句为LotusScript的随机数生成器添加种子,并使整数列表变小。

接下来,将计数器初始化为零,并执行在计数器>4时退出的while循环。在循环体中,使用Int(Rnd() * LineNo)生成0到LineNo减1范围内的随机整数。如果它在列表中,则在不增加计数器的情况下循环。如果它不在列表中,那么将其添加到列表中,并将计数器用作整数数组中的索引,并将数组中的元素设置为随机积,and+增加计数器。

此时,您有一个问题数组,并且在问题数组中有另一个随机索引数组。

最后,执行一个从0到4的循环。在循环体中,从整数数组中读取一个索引,并使用它从问题数组中读取一个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73563311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档