使用随机数生成器对整数进行随机排列

这是我的作业:

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

回到顶部