答题小程序-题库中随机生成试题的解决方案(一)

 

答题小程序从试题库中随机生成试题的方式,我想了一下,看怎么实现。

方法一、查询第一条,随机下一题的题目的ID

 

先取第一道题,然后随机一个步长,根据这个步长的随机值,去搜数据库的时候,用这个增长的步长做间隔。比如 MySQL 或者 PostgreSQL 中,就用这个递增的步长拼接到 offset 查询语句上。

比如第一次查询第一道题,查询条件相同,但是 offset = 0。那就出来数据库中第一条数据。

第二次查询时,随机一个 (0-10) 以内的整数,比如随机到 2, 那本次查询就采用 offset 2 去搜数据库,这样就查到了数据库中的第三条数据返回给前端。

第三次再查询,这次又随机一个 (0-10)以内的整数,比如随机到1,那本次查询就在前面基础上再 offset 1  ,就是 offset 3 ,查到第四条记录作为下一条题目返回给前端。

以此类推,直到完成总题目数量。

现在我建立一个简单的答题表 question 来验证上面这个 【题库中随机生成试题的解决方案】 办法是否可行。

CREATE TABLE `question` (
`id` varchar(20) NOT NULL,
`title` varchar(225) NOT NULL DEFAULT ” COMMENT ‘答题标题’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT=’答题问题库’

查询第一条。

select id from question limit 1,1;

查询第二条

select id from question limit 1,3;

查询第三条

select id from question limit 1,4;

经过我实际操作,可以确认能查到,这个方法是可行的。