c# - 算法 - 在 C# 中初始化一个随机数组

标签 c# algorithm random

对于一些 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/

相关文章:

我可以从函数返回不同的序列吗?

javascript - 我需要能够按下一个按钮来推特报价

c# - 如何使用 Linq 检查 JSON 中的标签

c# - 所有情况下的 IoC 容器? (针对静态类)

c# - 我可以以编程方式启用/禁用中断异常吗?

c - 返回给定数组中的最小唯一值 - C 语言

algorithm - 如何找到两个点之间距离一定的点的位置?

c++ - segmentation 点平面

java - 将数字放在二维数组中的随机点

c# - .NET Core <select> 有默认值吗?