【发布时间】:2018-05-01 18:42:18
【问题描述】:
我要创建多维数组with Random r = new Random();
每个元素都应该是随机生成的,而且它们都必须是不同的元素。它们都不应该是相同的。我也不能使用任何功能。
这里是数组,但有相同的元素。 我希望所有的元素都不同。
for (int i=0; i<3; i++)
{
for(int j=0; j<4; j++)
{
arr[i, j] = rand.Next(1,25);
}
}
【问题讨论】:
-
“每个元素都应该随机生成,但必须有所有不同的元素”是矛盾的。也许您正在寻找shuffle?
-
根据您的代码,只有 25 个可能的数字。您可以创建一个包含所有 25 个的
List<int>,然后随机排列列表,然后通过从列表中获取一个接一个的数字来填充您的数组。 -
那么,每当你创建一个新的随机元素时,检查它是否已经存在,如果存在,就生成一个新的代替吗?
-
@DavidRector 这几乎是正确的洗牌:en.wikipedia.org/wiki/…
-
@DavidRector 对不起,这对我来说含糊不清。我不是指 RNG 偏见。当您迭代和交换时,您需要在当前位置 之后选择一个随机位置。请参阅该链接的实施错误下的第二段。
标签: c# arrays algorithm random