当前位置: 首页 > 面试题库 >

如何从不互相关注的数字池中生成随机数

笪涛
2023-03-14
问题内容

我有一组数字(例如{3,6,7,11,20}),我需要每个数字x次出现在我的收藏夹中。

我的解决方案是创建一个由两个整数(num,numOfAppearnces)组成的类,我们称之为“元素”。

我在arrayList中创建了一个“元素”池,然后生成一个介于0到list.size之间的随机数,并将该数字存储在随机索引中。当numOfAppearances减少到0时,我从列表中删除了此元素。

我的问题是,是否还有其他优雅的解决方案来生成随机数,而不是从某个范围生成?


问题答案:

是的,有一些简短的方法可以实现您所描述的内容。

例如 :

Integer[] arr = {3,6,7,11,20};
List<Integer> shuffled = new ArrayList<>();
for (Integer i : arr)
    shuffled.addAll (Collections.nCopies(x,i)); // add i to your List x times
Collections.shuffle(shuffled); // shuffle the List to get random order

或者(如果您不想使用Collections.nCopies(x,i)):

Integer[] arr = {3,6,7,11,20};
List<Integer> shuffled = new ArrayList<>();
for (int j = 0; j < x; j++)
    for (Integer i : arr)
        shuffled.add (i);
Collections.shuffle(shuffled); // shuffle the List to get random order


 类似资料:
  • 本文向大家介绍JS中生成随机数的用法及相关函数,包括了JS中生成随机数的用法及相关函数的使用技巧和注意事项,需要的朋友参考一下 先为大家介绍一些关于随机数的相关函数: var Rand = Math.random(); 1.Math.random(); 结果为0-1间的一个随机数(包括0,不包括1) 2.Math.floor(num); 参数num为一个数值,函数结果为num的整数部分。 3.Ma

  • 我想从randomInts(int-num,int-start,int-end)中获取随机数,并将这些数放入数组。 我试着做

  • 我需要1、2、3和4中的两个随机数,但它们不能相同,我需要它们在两个不同的变量中。 比如

  • 问题内容: 在java中如何生成随机数? 问题答案: 在Java 1.7或更高版本中,执行此操作的标准方法如下: 请参阅相关的JavaDoc。这种方法的优点是不需要显式初始化java.util.Random实例,如果使用不当,可能会引起混乱和错误。 但是,相反,没有办法明确设置种子,因此在有用的情况下(例如测试或保存游戏状态或类似情况),很难重现结果。在这种情况下,可以使用下面显示的Java 1.

  • 我想用骰子做一个游戏,我需要在其中加入随机数(以模拟骰子的侧面。我知道如何在1到6之间进行)。使用 不能很好地工作,因为当我运行程序几次时,我得到的输出是: 所以我想要一个每次都会生成不同随机数的命令,而不是连续5次生成相同的随机数。是否有命令可以执行此操作?

  • 问题内容: 我一直在寻找一种简单的 Java算法来生成伪随机的字母数字字符串。在我的情况下,它将用作唯一的会话/密钥标识符,在整个世代中“可能”是唯一的(我的需求实际上不需要任何更复杂的东西)。 理想情况下,我可以根据自己的独特性要求指定长度。例如,生成的长度为12的字符串可能看起来像。 问题答案: 算法 要生成随机字符串,请连接从可接受的符号集中随机抽取的字符,直到字符串达到所需的长度。 实作