如何生成在 0 和 1 之间排序if
的随机值而不在每次迭代时进行测试?
0.01
0.12
0.2
0.33
...
您可以使用树集
进一步提供对其元素的总排序的 Set。元素使用它们的自然顺序进行排序,或者由通常在排序集创建时提供的比较器进行排序。集合的迭代器将按元素升序遍历集合
例如
public static void main(String[] args) {
SortedSet<Float> randoms = new TreeSet<Float>();
Random random = new Random();
while(randoms.size() < 5) {
randoms.add(random.nextFloat());
}
for(Float r: randoms) {
System.out.println(r);
}
}
输出
0.017743647
0.1998645
0.37926406
0.39519936
0.7745726
编辑:如果按顺序生成随机数,其中下一个随机数取决于前一个数字,我认为它不是随机数。
以下代码保证每个下一个数字都将大于上一个。而且数量是随机的。对你有好处吗?
Random r = new Random();
double[] results = new double[n];
double prev = 0;
for (int i = 0; i < n; i++) {
double next = prev + r.nextDouble();
results[i] = next;
prev = next;
}
缺点是数量不受任何预定义阈值的限制。如果您需要这个,我建议您只生成数字数组,然后使用Arrays.sort()
(正如许多其他人推荐的那样)对其进行排序。
取决于你想要什么:
a) 生成 n 个随机数并对它们进行排序
b)为了使下一个随机数创建一个随机数,乘以(1-最后一个数字)并加上最后一个数字。
请注意,生成的分布非常不同
假设通过有序你的意思是排序,你可以创建一系列随机数,将它们添加到集合中,然后对其进行排序。