gpt4 book ai didi

java - 如何创建包含给定范围内的(准)随机值但具有固定重复项百分比的 int 数组?

转载 作者:行者123 更新时间:2023-11-30 07:44:41 25 4
gpt4 key购买 nike

我正在尝试创建(在Java中)一个包含指定数量的整数k(例如,50、500、1000等)的整数数组,该数组不使用库函数或集合,但包含随机数范围内(即从 1 到 k)的数字分类,具有指定的重复百分比。

我已经弄清楚如何实现随机播放,但我不确定如何最好地实现重复阈值。到目前为止我所拥有的:

static void shuffle(int[] array) {
int n = array.length;
for (int i = 0; i < array.length; i++) {
// Get a random index of the array past i.
int random = i + (int) (Math.random() * (n - i));
// Swap the random element with the present element.
int randomElement = array[random];
array[random] = array[i];
array[i] = randomElement;
}
}

然后,使用这个方法:

    //Create an ascending ordered array of size k to be shuffled
int [] tempInit = new int [filesizes[i]];

for(int k = 0; k < filesizes[i]; k++)
{

tempInit[k] = k+1;

}

//Shuffle the ascending array
shuffle(tempInit);

for(int k = 0; k < tempInit.length; k++)
{

System.out.println(tempInit[k]);
}

我认为它可行的一种方法是使用所需的重复项百分比(假设是 20%),然后随机选择固定数量的整数,然后循环遍历数组并替换每个元素(如果不等于固定数字之一)与这些固定数字之一。我不确定选择这些固定数字的逻辑是什么,或者用于替换目的的固定数字的数量。

最佳答案

试试这个! 80% 为数字 1,5% 为彼此,最多 5:

Map<Double, Integer> map = new LinkedHashMap<>();
map.put(0.8, 1);
map.put(0.85, 2);
map.put(0.9, 3);
map.put(0.95, 4);
map.put(1, 5);
Random random = new Random();
double result = random.nextDouble();
int value = map.entrySet().stream().filter(entry -> entry.getKey() < result).reduce(0, Math::min);

关于java - 如何创建包含给定范围内的(准)随机值但具有固定重复项百分比的 int 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34098200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com