Matrix--打乱选择题
来源:互联网 发布:怎么修改淘宝追加评价 编辑:程序博客网 时间:2024/05/15 22:25
伪随机种子,生成n个数的随机不重复序列。
需求分析:
做选择题的时候有这样的需求,对于不同的学生,他们要能够看到不一样的打乱方式。但是对于同一个学生,他应该只能有一种打乱方式。
因此,我们需要构造一个函数,它的参数列表类似于这样
@param max 指输入的要打乱的最大数值@return 0到max-1的随机不重复序列。function (studentId, problemId, max)
用哈希来实现伪随机性。将学号和题目ID做一个运算(这里选择平方和)再取余。
每次选择一个数并将它放到队尾。
js实现代码如下:
/** *根据studentid和problemid生成的一个 *[0 - max-1]的随机不重复序列 *@author 王镇佳 wzjfloor@163.com */function getRandomArr(studentId, problemId, max) { var arr = []; var target = []; for (let i = 0; i < max; i++) arr.push(i); for (let i = 0; i < max; i++) { let seed = (studentId * studentId + problemId * problemId) % arr.length; // swap let temp = arr[seed]; arr[seed] = arr[arr.length - 1]; arr[arr.length - 1] = temp; target.push(arr.pop()); } return target;}console.log(getRandomArr(123, 234, 4));console.log(getRandomArr(123, 234, 6));console.log(getRandomArr(123, 234, 10));console.log(getRandomArr(123, 235, 4));console.log(getRandomArr(123, 235, 6));console.log(getRandomArr(123, 235, 10));console.log(getRandomArr(124, 234, 4));console.log(getRandomArr(124, 234, 6));console.log(getRandomArr(124, 234, 10));
0 0
- Matrix--打乱选择题
- 选择题
- 选择题
- 选择题
- 数组打乱
- 打乱数组
- 打乱数组
- 高考选择题
- Linux选择题
- Java选择题
- google2011选择题
- JAVA 选择题
- C++选择题
- java选择题
- JAVA选择题
- js选择题
- 《软件工程》选择题
- java选择题
- java百钱白鸡的算法
- Memcache 的学习
- 206.Interval Sum-区间求和 I(中等题)
- 动态规划--背包问题,带习题
- usaco Ordered Fractions 顺序的分数(两种解法)
- Matrix--打乱选择题
- Struts2转发和重定向(跨业务模块)
- vs 如何智能感应并且自动选中关联的单词
- java实现打印菱形
- mosefet米勒电容效应
- 临界区算法:Peterson算法与Dekker算法
- 语音识别-----Kaldi学习链接分享
- [笔记]delphi读出数据并转换
- 多线程的同步和互斥