gpt4 book ai didi

c# - 如何随机化数组项,然后按所需百分比裁剪数组

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:25 25 4
gpt4 key购买 nike

将数组中的项目随机化并删除随机项目以获得所需的数组长度的最佳方法是什么?

假设我有一个包含 100 个项目的数组。

首先,我想随机化它。

然后,我有三个百分比系数:10%、30%、60%。

我想从原始数组中删除项目,这样我得到的新数组将是原始大小的 60%(60 个项目),然后是 30%,然后是 10%。

最佳答案

随机化数组的最佳方法是使用 Fisher-Yates-Durstenfeld shuffle .您可以就地执行此操作(即打乱现有数组)或创建一个包含随机顺序项目的新集合。

我可能会这样做,creating a new shuffled collection而不是改变原始数组,然后使用 SkipTake获得打乱后的数组所需的子序列。 (如果您愿意,可以很容易地将此​​代码更改为 perform an in-place shuffle。)

// uses Shuffle extension from https://stackoverflow.com/a/1653204/55847
var temp = original.Shuffle().ToArray();
var sixty = temp.Take((int)(temp.Length * 0.6)).ToArray();
var thirty = temp.Skip(sixty.Length).Take((int)(temp.Length * 0.3)).ToArray();
var ten = temp.Skip(sixty.Length + thirty.Length).ToArray();

关于c# - 如何随机化数组项,然后按所需百分比裁剪数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4120002/

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