Java 如何从非';我们不能互相跟踪

Java 如何从非';我们不能互相跟踪,java,c#,random,Java,C#,Random,我得到了一个数字池(例如{3,6,7,11,20}),我需要每个数字在我的集合中出现x次 我的解决方案是创建一个类,我们称之为“element”,包含两个整数(num,nummofappernces) 我在arrayList中创建了一个“元素”池,然后生成了一个介于0到list.size之间的随机数,并获得了存储在随机索引中的数字。 当numOfAppearances减少到0时,我从列表中删除了这个元素 我的问题是,有没有其他优雅的方法来生成随机数,而不是从某个范围生成?是的,有一些较短的方法来

我得到了一个数字池(例如{3,6,7,11,20}),我需要每个数字在我的集合中出现x次

我的解决方案是创建一个类,我们称之为“element”,包含两个整数(num,nummofappernces)

我在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

是的,有一些较短的方法可以实现您所描述的目标

例如:

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

下面是一个简单的Python程序

import random
def genRNum():
    numlist = [3,6,7,11,20]
    i = random.randrange(0,4)
    RNum = numlist[i]
    print(RNum)

genRNum()

下面是一个简单的Python程序

import random
def genRNum():
    numlist = [3,6,7,11,20]
    i = random.randrange(0,4)
    RNum = numlist[i]
    print(RNum)

genRNum()

另一种最简单的方法是使用Windows PowerShell

随机取3,6,7,11,20


不是这样的

另一个最简单的方法是使用Windows PowerShell

随机取3,6,7,11,20


不是吗

我建议在你问之前先“搜索”。我会做类似于您的解决方案,但只需将它们放在一个数组中,生成一个0-array.size之间的随机数,并将其用作索引。此问题的“最佳”解决方案将取决于
x
的值。如果它很高,并且不同值的数量也很高,并且内存使用是一个问题,那么可能需要一个更高效的内存解决方案。否则,只需将所有数字(包括“x”副本)放入一个数组并将其洗牌即可。@nesohc好吧,我不知道我得到的不同数字的数量,这就是我使用arrayList的原因。我建议在询问之前先“搜索”。我会做类似于您的解决方案,但只需将它们放在一个数组中,生成一个0-array.size之间的随机数,并将其用作索引。此问题的“最佳”解决方案将取决于
x
的值。如果它很高,并且不同值的数量也很高,并且内存使用是一个问题,那么可能需要一个更高效的内存解决方案。否则,只需将所有数字(包括“x”个副本)放入一个数组并将其洗牌即可。@nesohc好吧,我不知道我得到的不同数字的数量,这就是我使用arrayList的原因。从OP:
中,我需要每个数字在我的集合中出现x次
。您没有满足此要求。从OP:
中,我需要每个数字在我的收藏中出现x次
。您没有满足此要求。