以随机顺序生成连续数字序列的最快方法

时间:2014-02-24 15:50:03

标签: c# list random

以随机顺序生成连续数字列表的最快方法是什么?

即。生成一个从1到100的数字列表,该列表必须只包含一个数字。列表的顺序应该是随机的。

java或c#please。

我的伪代码看起来像这样,非常低效。

 var list = new list<int>();
 for (int i = 1; i <= 100; ++i) {
     int x;
     repeat {
         x = random(1, 100);
     until (list.contains(x) == false);
     list.add(x);
 }

1 个答案:

答案 0 :(得分:3)

是的,它效率极低,甚至没有及时限制。

通常的解决方案是

  1. 生成有序数组
  2. 改变它(我推荐Fisher–Yates shuffle,它简单,快速,无偏见,你会找到任何语言的实现)