对于一些 child 游戏,我有一个大小为 10 的 bool 类型数组。 我得到了一个介于 1 到 10 之间的随机数,我喜欢做的是只初始化该数量的单元格为 TRUE,但顺序是随机的。
例如,如果我的随机数是 4,我希望输出如下:
F T F F F T T F F T
T F F T T T F F F F
有没有用 C# 做的简单方法?
请注意,我知道所有的语法(初始化一个数组,使用随机和所有),我很难找到一个简短的算法来完成它。
最佳答案
生成:
int length = 10;
int numberOfTrue = 4;
bool[] array = Enumerable
.Range(0, length)
.Select(index => index < numberOfTrue)
.ToArray();
和shuffle (例如使用 Fisher–Yates 算法):
Random random = new Random();
...
for (int i = array.Length - 1; i >= 1; --i) {
int from = random.Next(i + 1);
var h = array[i];
array[i] = array[from];
array[from] = h;
}
关于c# - 算法 - 在 C# 中初始化一个随机数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52290960/