【发布时间】:2017-04-24 15:28:37
【问题描述】:
我知道如何用整数随机填充数组。
但假设我有Apple、Banana 和Orange。
我想以随机顺序用这 3 种水果填充一个数组。
我该怎么做?我应该为此使用 Fisher-Yates Shuffle 吗?
我的数组必须这样写:
string[] basket = new string[20];
【问题讨论】:
-
循环遍历数组的大小并在每次循环迭代中选择一个随机字符串插入?
-
如果你不关心重复,只需循环并随机选择一个。如果你这样做了,那么之前有很多关于洗牌的问题
-
我认为 OP 确实关心重复项,因为他提到了 Fisher-Yates shuffle,它通过对集合进行改组来获得集合的排列。
-
结果必须是真正随机的吗?您可以拥有所有可能结果的
List<string>,使用一些简单的LINQ,您可以OrderBy(x => Guid.NewGuid()),然后Take(3).ToArray() -
我觉得即使我们说,“是的,使用 Fisher-Yates shuffle 来执行此操作”,那么您仍然会被卡住,因为您的问题似乎是“我如何随机选择一个字符串?@ 987654329@ 处理数字,而不是字符串”——我的意思是,如果这是您的问题,那么请明确表示,不要将自己与 XY Problem 混淆。 @BlakeThingstad 那么为什么他的数组大小为 20? “每 3 个条目使用 Fisher-Yates 洗牌,然后重新开始并继续这样做,直到数组被填满”我想这是有道理的。