Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 生成具有成对数字的数组_C#_Arrays - Fatal编程技术网

C# 生成具有成对数字的数组

C# 生成具有成对数字的数组,c#,arrays,C#,Arrays,我有以下代码: Random num = new Random(); int check = CheckIfOdd(num.Next(1, 1000000)); int counter = 1; while (check <= 0) { if (check % 2 == 0) { check

我有以下代码:

Random num = new Random();
            int check = CheckIfOdd(num.Next(1, 1000000));
            int counter = 1;

            while (check <= 0)
            {
                if (check % 2 == 0)
                {
                    check = CheckIfOdd(num.Next(1, 1000000)); ;
                }
                counter++;
            }
            int[] nArray = new int[check];
            int arLength = 0;
            //generate arrays with pairs of numbers, and one number which does not pair.
            for (int i = 0; i < check; i++)
            {
                arLength = nArray.Length;

                if (arLength == i + 1) 
                {
                    nArray[i] = i + 1;
                }
                else
                {
                    nArray[i] = i;
                    nArray[i + 1] = i;
                }
                i++;
            }
通过“神秘性”

尝试以下代码:

int[] output = Enumerable.Range(0, 11).Select(x => x / 2).ToArray();
它生成具有以下值的数组:

{ 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5 }
您应该能够将其扩展到所需的任意多个元素

如果希望以随机顺序输出,请尝试以下操作:

Random r = new Random();
int[] output = Enumerable.Range(0, 11).Select(x => x / 2).OrderBy(x => r.Next()).ToArray();
在一次运行中,作为一个示例,我得到了以下结果:

{ 0, 4, 1, 2, 2, 4, 5, 3, 3, 1, 0 }

要使用单个元素生成大量随机对,可以执行以下操作:

Random r = new Random();
int pairs = 5; //elements = 2 * pairs + 1;
int max = 100;
int[] output =
    Enumerable
        .Range(0, pairs)
        .Select(x => r.Next(1, max + 1))
        .SelectMany(x => new [] { x, x })
        .StartWith(r.Next(1, max + 1))
        .OrderBy(x => r.Next())
        .ToArray();
但是,这并不能保证最终不会出现3、4或更多数量的碰撞


这不需要“System.Interactive”:

请尝试以下代码:

int[] output = Enumerable.Range(0, 11).Select(x => x / 2).ToArray();
它生成具有以下值的数组:

{ 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5 }
您应该能够将其扩展到所需的任意多个元素

如果希望以随机顺序输出,请尝试以下操作:

Random r = new Random();
int[] output = Enumerable.Range(0, 11).Select(x => x / 2).OrderBy(x => r.Next()).ToArray();
在一次运行中,作为一个示例,我得到了以下结果:

{ 0, 4, 1, 2, 2, 4, 5, 3, 3, 1, 0 }

要使用单个元素生成大量随机对,可以执行以下操作:

Random r = new Random();
int pairs = 5; //elements = 2 * pairs + 1;
int max = 100;
int[] output =
    Enumerable
        .Range(0, pairs)
        .Select(x => r.Next(1, max + 1))
        .SelectMany(x => new [] { x, x })
        .StartWith(r.Next(1, max + 1))
        .OrderBy(x => r.Next())
        .ToArray();
但是,这并不能保证最终不会出现3、4或更多数量的碰撞


这不需要“System.Interactive”:



那么您正在为这个编写单元测试;)?是的,有点,但我想优化我的代码
arLength=nArray.Length
这将始终完全等于
check
,因为这是您定义的数组长度。数组的长度不考虑您向其中添加了多少内容,它只考虑您请求的长度。使用此值生成已排序的集合,然后随机化。将这样的任务分解成更小的部分通常比一次完成更容易。下面是关于随机集合的另一个问题的答案:那么您正在为这个问题编写单元测试;)?是的,有点,但我想优化我的代码
arLength=nArray.Length
这将始终完全等于
check
,因为这是您定义的数组长度。数组的长度不考虑您向其中添加了多少内容,它只考虑您请求的长度。使用此值生成已排序的集合,然后随机化。将这样的任务分解成更小的部分通常比一次完成更容易。下面是关于随机集合的另一个问题的答案:如果我想要100-100万个元素,数字在10-10亿之间。我怎样才能做到这一点?据我所知,如果我将范围设置为0-1亿,它将生成介于这两者之间的数字,但最多可达5亿个元素。这是正确的吗?@andrelange91-你可能需要更清楚地解释你需要什么。基于您问题中的算法,我的代码似乎要么适合,要么您可以对其进行相当简单的调整以适应。然而,我不明白你怎么能像你要求的那样把数字配对,从
0
for(int I=0;I
)开始,就像你在你的代码中那样,有多达100万个元素和多达10亿的数字。这根本没有道理。你能解释得更清楚些吗?很抱歉我不够清楚,我需要一个随机的元素量,即{0,1,2,3,4}@andrelange91-我添加了一个答案,这个答案几乎符合你的要求。碰撞,意味着会有更多的单个数字?如果我想要100-100万个元素,数字在10-10亿之间。我怎样才能做到这一点?据我所知,如果我将范围设置为0-1亿,它将生成介于这两者之间的数字,但最多可达5亿个元素。这是正确的吗?@andrelange91-你可能需要更清楚地解释你需要什么。基于您问题中的算法,我的代码似乎要么适合,要么您可以对其进行相当简单的调整以适应。然而,我不明白你怎么能像你要求的那样把数字配对,从
0
for(int I=0;I
)开始,就像你在你的代码中那样,有多达100万个元素和多达10亿的数字。这根本没有道理。你能解释得更清楚些吗?很抱歉我不够清楚,我需要一个随机数的元素,即{0,1,2,3,4}@andrelange91-我添加了一个答案,这个答案几乎符合你的要求。碰撞,意味着最终会有更多的单个数字?