使用随机数生成器对整数进行随机排列
这是我的作业:
Random r = new Random();public int get100RandomNumber() {
return 1+r.nextInt(100);
}
您将获得一个名为getrand100()的预定义函数(上面),该函数返回一个整数,该整数是1到100之间的一个随机数。您可以根据需要多次调用此函数,但是请注意,此函数会占用大量资源。您不能使用任何其他随机生成器。您
更改的定义
getrand100()
。输出:以随机顺序打印数字1-20。(不是20个随机数)
我尝试过的
public class MyClass { static Random r = new Random();
static HashSet<Integer>;
public static void main(String args[]) {
myMethod();
System.out.println(s);
}
public static void myMethod() {
boolean b = false;
s = new HashSet<Integer>();
int i = getRand100();
if (i >= 20)
i = i % 20;
int j = 0;
int k, l;
while (s.size() <= 20)
{
System.out.println("occurence no" + ++j);
System.out.println("occurence value" + i);
b = s.add(i);
while (!b) {
k = ++i;
if(k<=20)
b = s.add(k);
if(b==true)
break;
if (!b) {
l = --i;
if(i>=1&&i<=20)
b = s.add(l);
if(b==true)
break;
}
}
}
System.out.println(s);
}
public static int getRand100()
{
return r.nextInt(100) + 1;
}
}
谢谢你的帮助!
回答:
我相信您在问如何使用随机数生成器以随机顺序打印数字1到20。这也称为“随机排列”。所述费-耶茨洗牌是这样的算法。
但是,要实现该算法,您首先需要一个随机数生成器,该生成器可以以相等的概率从N个项目中选择一个,其中N的范围从2到要洗牌的集合的大小,而您只有一个可以选择的项目每100个项目中有一个概率相同。这可以通过模运算和“重新滚动”的组合轻松获得。
以上是 使用随机数生成器对整数进行随机排列 的全部内容, 来源链接: utcz.com/qa/434138.html