基于种子生成更大集的子集

时间:2014-07-17 08:24:01

标签: random set

我需要实现一个测验生成器,它基于相同的输入(种子),生成相同的问题集。

我想知道如何以一种方式从集合中选择元素:

  • 每次从同一种子中选择相同的元素
  • 不同的种子产生不同的结果
  • 每个种子只选择一个元素

实施例

原创,大集

  • [简单]问题1
  • [简单]问题2
  • [简单]问题3
  • [简单]问题4
  • [简单]问题5
  • [简单]问题6
  • [中]问题7
  • [中]问题8
  • [中]问题9
  • [中]问题10
  • [Hard] Question 11
  • [Hard] Question 12
  • [Hard] Question 13

使用种子1(类似于:75163481528374)会产生

  • [简单]问题2
  • [简单]问题3
  • [简单]问题6
  • [中]问题7
  • [中]问题10
  • [Hard] Question 11

使用种子2(类似于:63566663224223)会导致

  • [简单]问题2
  • [中]问题7
  • [中]问题8
  • [中]问题9
  • [中]问题10
  • [Hard] Question 11
  • [Hard] Question 13

在我找到上述问题的解决方案后,我希望能够控制结果中包含的每个类别的百分比,但我想我可以将算法应用于从类别创建的子集。

我想在Excel或C#中实现这个问题,但我不认为这与问题有关。

1 个答案:

答案 0 :(得分:0)

  1. 按类别将问题组织到单独的数组中。
  2. 使用随机数生成器shuffle每个阵列。
  3. 从每个随机数组的开头选择所需的问题数(或百分比)。
  4. 如果您的实现语言没有内置的随机播放功能,那么Fisher-Yates算法只有a few lines of code,并且可以让您完全确保随机数生成器的播种直接进行随机播放程序,所以你不会有任何意外。