gpt4 book ai didi

c# - 为什么我在生成 Random() 数字时会得到奇怪的结果?

转载 作者:太空宇宙 更新时间:2023-11-03 19:13:07 25 4
gpt4 key购买 nike

我的程序需要:

一个。生成一个包含 20 个从 0 到 9 的随机整数的数组。搜索数字 7 的第一次出现(如果有),并报告它在数组中的位置。

重复a部分的计算1000次,对于数组中的每个位置,报告数组中第一次出现a 7 在该位置的次数

然而,每当我运行该程序时,我都会得到奇怪的结果(每次都不同),例如:

  1. 在任何位置都没有找到七人制
  2. 在一个位置发现了 1000 个七人制,在其他地方没有发现七人制
  3. 在 2 个位置发现了数百个七,在其他任何地方都没有发现。

有谁知道我的程序有什么问题吗?

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Week_6_Project_2
{
class Program
{

static int intArrayLength = 20;
static int[] resultsArray = new int[intArrayLength];

public static Array generateRandomArray() {
int[] randomNumberArray = new int[intArrayLength];
Random random = new Random();
int popcounter = 0;
while (popcounter < intArrayLength) {
randomNumberArray[popcounter] = random.Next(0, 10);
popcounter += 1;
}
return randomNumberArray;
}

public static void searchForSevens()
{
int counter = 0;
int[] randomArray = (int[])generateRandomArray();
while (counter < intArrayLength)
{
if (randomArray[counter] == 7)
{
resultsArray[counter] += 1;
counter = intArrayLength;
}
counter += 1;
}
}
static void Main()
{
int searchCounter = 0;
while (searchCounter < 1000)
{
searchForSevens();
searchCounter += 1;
}

int displayCounter = 0;
while (displayCounter < intArrayLength)
{
Console.WriteLine("Number of first occurrence of 7 at position {0} = {1}", displayCounter, resultsArray[displayCounter]);
displayCounter += 1;
}
Console.ReadLine();

}
}
}

最佳答案

您的主要问题是每个 searchForSevens() 测试只需要一小部分时间,并且 Random 类使用时钟自动播种。然而,时钟的分辨率有限。结果是您的许多(有时是全部)随机序列将是相同的。最多您将有 2 或 3 个不同的结果集。

这个单线程程序的简单修复是使用 1 个 Random 静态实例。

关于c# - 为什么我在生成 Random() 数字时会得到奇怪的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19072067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com