首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在将相等的值组合在一起时对数组进行混洗?

如何在将相等的值组合在一起时对数组进行混洗?
EN

Stack Overflow用户
提问于 2021-07-06 10:12:19
回答 2查看 63关注 0票数 0

假设我有一个这样的数组。

代码语言:javascript
运行
复制
int[] arr = {1,2,3,4,4,5,6,7,8,8,8,1};

如何在所有值都相等的情况下对其进行混洗?

混洗后的预期输出示例:

代码语言:javascript
运行
复制
3,1,1,8,8,8,7,2,4,4,6,5
EN

回答 2

Stack Overflow用户

发布于 2021-07-06 10:52:13

你可以这样做:

  • 查找数组中的唯一值以及每个值出现的次数。将计数存储在字典中,使用混洗算法(例如在混洗后的数组中使用counts.
  • Shuffle Fisher-Yates.
  • For v )计算唯一值,将v写入输出数组counts[v]次。
票数 1
EN

Stack Overflow用户

发布于 2021-07-06 10:40:08

代码语言:javascript
运行
复制
var rng = new Random();    
arr = arr
    .GroupBy(i => i)
    .OrderBy(g => rnd.Next())
    .SelectMany(g => g)
    .ToArray();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68263729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档