c# - 创建包含 50 个项目的随机数组/只有 0 和 1
问题描述
我需要这样编码;
将有一个随机包含 50 个项目(只有 0 和 1)的数组。每行有 5 个项目,总共有 10 行。Level1:每行有 4 个零和 1 个(如 001000;10000;010000;00010 等) Level2:每行有 3 个零和 2 个(如 01010;11000;00011;10010 等)这将继续,以便..
实际上,0 代表绿色,1 代表红色。我将制作一个包含 5x10 按钮的游戏。当用户单击绿色按钮时,他将被传递到下一行。如果他点击红色按钮,他将失败。
我写了一些东西,但这不是我想要的。请帮忙 :(
int maxGreenCount = 5;
int maxRedCount = 1;
public int GenerateNumber()
{
int numbervalue;
numbervalue = Random.Range(0, 2);
return numbervalue;
}
public int[] GenerateRow()
{
int[] rowfinal = new int[50];
for (int i = 0; i < 50; i++)
{
for (int j = 0; j < 4; j++)
{
if (GenerateNumber() == 0)
{
if (greenCount < maxGreenCount)
{
rowfinal[i] = 0;
greenCount++;
}
}
if (GenerateNumber() == 1)
{
if (RedCount < maxRedCount)
{
rowfinal[i] = 1;
RedCount++;
}
}
RedCount = 0;
greenCount = 0;
}
}
return rowfinal;
}
我期望这个:
解决方案
使用 Linq:
Random rand = new Random();
var results = Enumerable.Range(1,4)
.Select(level => Enumerable.Range(1,10).Select(row => Enumerable.Repeat(1,level).Concat(Enumerable.Repeat(0, 5 - level))
.Select(column => new { column = column, rand = rand.Next() }).OrderBy(x => x.rand).Select(x => x.column).ToArray())
.ToArray())
.ToArray();
下面给出了一个二维数组
int[][] results = Enumerable.Range(1, 4)
.Select(level => Enumerable.Range(1, 10).SelectMany(row => Enumerable.Repeat(1, level).Concat(Enumerable.Repeat(0, 5 - level))
.Select(column => new { column = column, rand = rand.Next() }).OrderBy(x => x.rand).Select(x => x.column)).ToArray())
.ToArray();
推荐阅读
- python - 磁条(黑色矩形)检测
- java - 为什么下面的代码能够调用抽象方法而不实现它?
- java - Mongodb java驱动程序将结果作为字符串而不是bson对象
- ios - UITableViewCells 显示在表格视图容器之外
- r - 我收到“警告:kmeans 错误:聚类中心多于不同的数据点。” 我该如何解决?
- javascript - 反应选定的对象,无法显示我想要的
- java - 在单个语句中替换 Dash 和 Space
- excel - VBA 通过 Gmail 发送电子邮件
- vba - 如果您在循环中删除并添加一个项目,for 循环如何循环遍历项目?
- python-3.x - 在不存在的行上解析错误时出现意外的 EOF