gpt4 book ai didi

c - 将随机索引选取到排序数组中

转载 作者:太空宇宙 更新时间:2023-11-04 00:20:06 24 4
gpt4 key购买 nike

假设我有一个排序的值数组:

int n=4; // always lower or equal than number of unique values in array
int i[256] = {};
int v = {1 1 2 4 5 5 5 5 5 7 7 9 9 11 11 13}
// EX 1 ^ ^ ^ ^
// EX 2 ^ ^ ^ ^
// EX 3 ^ ^ ^ ^

我想生成 n 个随机索引值 i[0] ... i[n-1],以便:

  1. v[i[0]] ... v[i[n-1]] 指向一个唯一 数字(即不得指向 5 两次)
  2. 每个数字必须是同类中最右边的(即必须指向最后 5)
  3. 应始终包含最终数字(在本例中为 13)的索引。

到目前为止我尝试了什么:

  1. 获取最后一个唯一值的索引
  2. 打乱索引
  3. 选出前n个指标

我正在用 C 实现它,所以我可以依赖的标准 C 函数越多,代码越短越好。 (例如,shuffle 不是标准的 C 函数,但如果必须,我必须。)

最佳答案

创建最后索引值的数组

int last[] = { 1, 2, 3, 8, 10, 12, 14 };

Fisher-Yates shuffle数组。

从打乱后的数组中取出前 n-1 个元素。

将索引添加到最终数字。

如果需要,对结果数组进行排序。

关于c - 将随机索引选取到排序数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51978564/

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